【发布时间】:2020-09-23 18:29:09
【问题描述】:
我有一个这样的数组:
{
"_id" : ObjectId("581b7d650949a5204e0a6e9b"),
"types" : [
{
"type" : ObjectId("581b7c645057c4602f48627f"),
"quantity" : 4,
"_id" : ObjectId("581b7d650949a5204e0a6e9e")
},
{
"type" : ObjectId("581ca0e75b1e3058521a6d8c"),
"quantity" : 4,
"_id" : ObjectId("581b7d650949a5204e0a6e9e")
}
],
"__v" : 0
},
{
"_id" : ObjectId("581b7d650949a5204e0a6e9c"),
"types" : [
{
"type" : ObjectId("581b7c645057c4602f48627f"),
"quantity" : 4,
"_id" : ObjectId("581b7d650949a5204e0a6e9e")
}
],
"__v" : 0
}
我想创建一个查询,它将返回类型数组 ALL 与 $in 数组匹配的元素。
例如:
query([ObjectId("581b7c645057c4602f48627f"), ObjectId("581ca0e75b1e3058521a6d8c")])
应该返回元素 1 和 2
query([ObjectId("581b7c645057c4602f48627f")])
应该返回元素 2
query([ObjectId("581ca0e75b1e3058521a6d8c")])
应该什么都不返回
我试过了
db.getCollection('elements').find({'types.type': { $in: [ObjectId("581ca0e75b1e3058521a6d8c")]}})
但如果只有一种类型匹配,它会返回元素
【问题讨论】:
-
为什么 query([ObjectId("581ca0e75b1e3058521a6d8c")]) 应该什么都不返回?
-
因为没有元素只有 ObjectId("581ca0e75b1e3058521a6d8c")
标签: node.js arrays mongodb aggregation-framework