mongoDB updateOne不更新记录

时间:2016-10-04 05:40:28

标签: mongodb mongodb-query mongodb-php

我正在尝试使用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", 
        }
    ]
}

提前感谢任何帮助都是值得赞赏的

1 个答案:

答案 0 :(得分:1)

尝试此查询

db.institutions.updateOne(
    {
      "campus._id": ObjectId("578500ef87e4c326183e520e"),
      "_id": ObjectId("57f25706762c06cb7d9422fc") 
    },
    {
      "$set" : { "campus.$.country" : "SS1"}
    }
);

N.B:如果使用mongodb驱动程序或mongoose,则无需使用ObjectId("")只需使用"578500ef87e4c326183e520e"