我正在尝试使用updateOne更新mongoDB中的记录,un update记录在数组中,除了一个 country 字段外,所有字段都在更新,我尝试使用MongoChef更新它(MongoDB for linux的GUI),但它不起作用,如果我使用GUI中的Edit更新一个文档,那么该记录就可以在此之后更新。
我在MongoChef中尝试了以下查询
db.institutions.updateOne({
"campus": { "$elemMatch": { "_id": ObjectId("578500ef87e4c326183e520e")} },
"_id": ObjectId("57f25706762c06cb7d9422fc")
},
{
"$set" : { "campus.$.country" : "SS1"
}
});
只有国家/地区字段未更新如果我更新任何其他字段,则可以正常工作。
文档结构列在
下{
"_id" : ObjectId("57f26824762c06cb7d982e37"),
"campus" : [
{
"_id" : ObjectId("578500ee87e4c326183e5201"),
"country" : "GB",
"coreId" : NumberInt(1),
"city" : "Norwich",
}
]
}
提前感谢任何帮助都是值得赞赏的
答案 0 :(得分:1)
尝试此查询
db.institutions.updateOne(
{
"campus._id": ObjectId("578500ef87e4c326183e520e"),
"_id": ObjectId("57f25706762c06cb7d9422fc")
},
{
"$set" : { "campus.$.country" : "SS1"}
}
);
N.B:如果使用mongodb驱动程序或mongoose,则无需使用ObjectId("")
只需使用"578500ef87e4c326183e520e"