Arrays 在Mongo中,如何在条件中使用$In,并使用来自另一个字段的值?
数据: 我想查找col2_数组包含col1_数组任何值的所有文档。我尝试使用$IN条件,但未能将其他字段内容引用为数组。我该怎么办Arrays 在Mongo中,如何在条件中使用$In,并使用来自另一个字段的值?,arrays,mongodb,Arrays,Mongodb,数据: 我想查找col2_数组包含col1_数组任何值的所有文档。我尝试使用$IN条件,但未能将其他字段内容引用为数组。我该怎么办 { _id :1111, col1_array : ['a','b','c'], col2_array : ['a','f','g'] } 之后,您必须查找此特定id的记录 db.collection.aggregate([ { $unwind: "$col2_array" }, { $project: {
{
_id :1111,
col1_array : ['a','b','c'],
col2_array : ['a','f','g']
}
之后,您必须查找此特定id的记录
db.collection.aggregate([
{ $unwind: "$col2_array" },
{
$project:
{
index: { $indexOfArray: ["$col1_array", "$col2_array"] },
col2_array: 1,
col1_array: 1,
_id: 1
}
},
{ $match: { index: { $gte: 0 } } },
{ $group: { _id: "$_id" } }
])
我终于用我刚刚发现的挖掘Mongo文档解决了这个问题:
db.collection.find({_id:{$in:[result_of_above_query_ids]}})
非常感谢,但我终于找到了另一种方法,使用我刚刚发现的阵列交点。
db.getCollection('test').aggregate([
{$set : {
commonValues: { $setIntersection: [ "$col1_array", "$col2_array"]},
}},
{$match : {"commonValues" : {"$ne" : []}}}
])