MongoDB:查找其子文档包含给定值的文档

时间:2019-04-05 09:45:28

标签: mongodb find

给出的文档如下所示:

{
    "type" : "sometype",
    "title" : "sometitle",
    "references":{
        "1": "someref",
        "2": "otherref",
        "3": ""
    }
}

如何找到在子文档someref中设置了引用references的所有文档?

简单的find({references: "someref"})无效,因为引用不是有效的数组。

2 个答案:

答案 0 :(得分:0)

文档结构对于这种查询而言并不理想,但是您可以将聚合与$objectToArray运算符配合使用:

db.collection.aggregate([
    {$addFields: {refs: {$objectToArray: "$references"}}},
    {$match: {"refs.v": "someref"}},
    {$project:{refs: 0}}
])

答案 1 :(得分:0)

如果您要查找的子文档字段的数量很少,则可以使用$or

来过滤集合
db.collection.find(
   { $or: [
            {"references.1": "someref"},
            {"references.2": "someref"},
            {"references.3": "someref"}
          ]} )