如何使用 mongoose find 按内部数组进行过滤

How to use mongoose find to filter by inner arrays

{
    "_id" : ObjectId("5fa27539e2b1a10d0fdb82ba"),
    "extra_fields" : [ 
        {
            "tag" : "alias",
            "value" : "thealias"
        }, 
        {
            "tag" : "name",
            "value" : "nobody"
        },
    ]
}

这是我所指的对象,例如,我需要查询每个对象的extra_fields数组中所有具有tag="alias"的对象。如何使用 MongoDB 实现此目的?任何帮助将不胜感激。

更新:请检查这个,

{
    "_id" : ObjectId("5fa1b8ee30caf0655a64104a"),
    "status" : true,
    "extra_fields" : [ 
        {
            "tag" : "alias",
            "value" : "hes"
        }, 
        {
            "linked_collection_id" : "5fa1946a3ef5864410728f1f",
            "linked_master_id" : [ 
                "5fa19884dae0ba587c891d9a"
            ]
        }, 
        {
            "linked_collection_id" : "5f7d68861d5a43b422b12c6d",
            "linked_master_id" : [ 
                "5f7d6c3b629ab057b67fa789"
            ]
        }
    ]
}

我需要知道如何检索具有 linked_collection_id='abc' 且 linked_master_id 包含 'xyz' 的对象。谢谢

你只需要"extra_fields.tag": "alias"比较字段和结果。

查询很简单:

db.collection.find({
  "extra_fields.tag": "alias"
})

这样一来,每个至少有一个 'tag' 字段值为 'alias' 的文档都会被返回。

示例here

编辑:

要按多个字段查找,您可以使用此方法:

db.collection.find({
  "extra_fields.linked_collection_id": "abc",
  "extra_fields.linked_master_id": "xyz"
})