我有一个包含类似文档的数据库
{_id: 5,
fruit: 'apple',
vitamins: ['B1', 'B12', 'A1']
}
{_id: 7,
fruit: 'appricot',
vitamins: ['B6', 'D12', 'A1']
}
有没有办法查询所有包含以下内容的记录:维生素“A1”?
我正在寻找 mongo shell 查询和 pymongo 等效项。 我知道我可以放置一个 for 循环来迭代记录并检查列表是否包含元素,但我更喜欢在有元素时进行查询。
由于它是一个列表而不是对象列表,所以似乎我无法使用 $elemMatch...
谢谢
最佳答案
您有几个选择:
选项1:如果你只想匹配一个元素,你可以在投影中使用索引
db.collection.find({"vitamins":"A1"}, {"fruit":1, "vitamins.$":1})
选项 2:如果您希望能够匹配数组中的多个元素,您可以查看 aggregation framework :
db.collection.aggregate([{$unwind:"$vitamins"}, {$match:{"vitamins":"A1"}}])
关于python - mongodb:查询列表中的值(而不是对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23500666/