如何使用 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"
})
{
"_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"
})