如何使用猫鼬查找按内部数组过滤

时间:2020-11-04 09:55:47

标签: arrays mongodb find

#! /usr/bin/python3
x = input("enter the first number: ")
y = input("enter the second number: ")
z = input("enter the third number: ")
def max(x, y, z):
    if x>=y>=z:
            return x
    elif y>=x>=z:
            return y 
    else:
            return z
print('Maximal Number is: ' + max(x, y, z))

root@kali:~# ./Comparision.py

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

更新:请选中此项,

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

我需要知道如何检索具有linked_collection_id =“ abc”的对象,而linked_master_id包含“ xyz”。谢谢

1 个答案:

答案 0 :(得分:1)

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

查询非常简单:

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

这样,将返回每个至少包含一个带有'alias'值的'tag'字段的文档。

示例here

编辑:

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

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