我有下面的MongoDB文档,就像这一个:
{
"_id": "ABC",
"properties":
[
{
"_id": "123",
"weight":
{
"$numberInt": "0"
},
"name": "Alice"
},
{
"_id": "456",
"weight":
{
"$numberInt": "1"
},
"name": "Bob"
},
{
"_id": "789",
"weight":
{
"$numberInt": "1"
},
"name": "Charlie"
}
]
}
我希望找到名称为“Alice”的属性的_id,或名称为“$numberInt”的属性的_id:“0”表示。
我用的是pymongo。
以下做法:
from pymongo import MongoClient
mongo_client = MongoClient("mymongourl")
mongo_collection = mongo_client.mongo_database.mongo_collection
mongo_collection.find({'properties.name': 'Alice'}, {'properties': 1})[0]['_id']
给出first _id(“123”)但由于我对文档进行了筛选,如果Alice位于properties数组的第二个元素(_id:“456”)我可能会错过她。对于与具有指定名称的元素相关联的specific _id,哪种方法最好?
1条答案
按热度按时间laik7k3q1#
您可以简单地使用
$reduce
来迭代properties
数组。如果_id
字段符合您的条件,则有条件地存储它。Mongo Playground