2016-10-04 112 views
1

我想更新mongoDB中使用updateOne的记录,un更新记录是在数组中,并且所有字段正在更新,除了一个字段是国家,我试图用它来更新它MongoChef(用于Linux的MongoDB的GUI),但它不起作用,也是如果我使用GUI中的Edit更新一个Document,那么该记录已准备好在之后更新。mongoDB updateOne没有更新记录

我曾与下面的查询试图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", 
     } 
    ] 
} 

由于上市提前任何帮助appreciatiable

+0

当您查询db.institutions.findOne({“_id”:ObjectId(“57f25706762c06cb7d9422fc”)})'时,您能向我们展示您获得的文档吗? – chridam

+0

@chridam 我发现查询 db.institutions.find({ “campus.country”: “SS1”, “_id”:物件( “57f26824762c06cb7d982e37”) },{ “校园”:真 }); { “_id”:物件( “57f26824762c06cb7d982e37”), “校园”: { “_id”:物件( “578500ee87e4c326183e5201”), “国”: “国标”, “COREID”: NumberInt(14677), “城市”:“诺维奇” } ] } – Shahbaz

+0

但是,这是从您的更新查询完全不同的你在哪里查询与'{“_id”的文件:物件(“57f25706762c06cb7d9422fc”) }' – chridam

回答

0

尝试此查询

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

NB:如果使用MongoDB的驱动程序或猫鼬则没有需要使用ObjectId("")只需使用"578500ef87e4c326183e520e"

+1

这也不起作用我试过了 – Shahbaz

+0

哪里有哟你运行这个查询意味着mongo shell或任何东西? –

+0

我正在从项目,也MongoChef(MongoDB的一个GUI) – Shahbaz