【发布时间】:2023-01-09 08:56:50
【问题描述】:
我有一个这样的集合:
{
"_id": { "$oid": "61407" },
"name": [
{ "name": "belarusian" }
]
}
我需要在名称数组中添加一个元素region,使其看起来像这样:
{
"_id": { "$oid": "61407" },
"name": [
{ "name": "belarusian", "region": "Belarus" }
]
}
我尝试使用:
from bson.objectid import ObjectId
for i in range(0, df.shape[0]):
db1.cuisines.update_one(
{'_id': ObjectId(df['_id'][i])},
{ "$push": {
"name": { "region": df['name.region'][i] }
}}
)
但我得到的输出是:
{
"_id": { "$oid": "61407" },
"name": [
{ "name": "belarusian" },
{ "region": "Belarus" }
]
}
name 和region 都应该在单个对象内,而不是单独的对象内。
【问题讨论】:
-
您可以使用数组更新运算符 - 修改特定数组元素:mongodb.com/docs/v5.0/reference/operator/update/#array。
$push只是向数组添加了一个新元素——这不是您所期望的。