面试题答案
一键面试- 更新运算符:
$
运算符:用于定位数组中符合查询条件的第一个元素。$set
运算符:用于指定要更新的字段及其新值。
- 更新代码示例(假设集合名为
myCollection
,文档有_id
字段,且要更新name
为item1
的元素的subfields
):
db.myCollection.updateOne(
{ _id: ObjectId("your_document_id"), "arrayField.name": "item1" },
{
$set: {
"arrayField.$.subfields.key1": "new_value1"
}
}
);
在上述代码中:
{ _id: ObjectId("your_document_id"), "arrayField.name": "item1" }
是查询条件,用于定位特定文档及文档中arrayField
数组里name
为item1
的元素。your_document_id
需替换为实际文档的_id
值,arrayField
需替换为实际数组字段名。$set
中的"arrayField.$.subfields.key1": "new_value1"
表示更新arrayField
数组中符合查询条件的元素的subfields
中的key1
字段值为new_value1
。
如果是在Python的 pymongo
库中:
from pymongo import MongoClient
client = MongoClient("mongodb://localhost:27017/")
db = client["your_database"]
collection = db["myCollection"]
collection.update_one(
{ "_id": ObjectId("your_document_id"), "arrayField.name": "item1" },
{
"$set": {
"arrayField.$.subfields.key1": "new_value1"
}
}
)
同样,your_document_id
需替换为实际文档的 _id
值,arrayField
需替换为实际数组字段名。