2
我有文件,看起來像這樣:MongoDB CDriver如何更新索引N中的數組對象?
{
"_id" : ObjectId("5768e43"),
"APPID" : {
"Number" : 0,
},
sessions : [{
id : 111111,
"setOID" : {
"Number" : 0
},
"custID" : {
"Number" : 0
},
}, {
id : 133333,
"setOID" : {
"Number" : 2
},
"custID" : {
"Number" : 2
},
}, {
id : 7777,
"setOID" : {
"Number" : 2
},
"custID" : {
"Number" : 2
},
},
]
}
我喜歡讓會議elment其其ID == 133333(這是在[1]) 並能夠用新值更新它並添加新的元素,它 所以它看起來就像這樣:
{
id : 133333,
"setOID" : {
"Number" : 3333
},
"custID" : {
"Number" : 4444
},
new_attr_1 : 0
new_attr_2 : 2
},
的文檔是很難理解,當涉及到C驅動 有人可以展示一下它的最好辦法做到這一點?
UPDATE
我試着用cdriver 1.4版本(最新)和奇怪的事情正在發生 更新並失敗(returend真) 但在文件中沒有更新
bson_t *query2 = BCON_NEW ("sessions.id ", BCON_INT32 (133333));
bson_t *update;
update = BCON_NEW ("$set", "{","Sessions.$.new_attr_1" ,BCON_INT32 (0) ,"}");
if (!mongoc_collection_update (collection,MONGOC_UPDATE_NONE, query2, update, NULL, &error)) {
fprintf (stderr, "%s\n", error.message);
goto fail;
}
,從而你會看到奇怪的事情發生,我如何檢查更新是否真的成功?
謝謝,但我需要的C驅動方式的人,在C驅動是噩夢 – user63898
什麼是「$」美元符號?我將其轉換爲BCON_NEW – user63898
在這裏,您有一個使用C驅動程序更新文檔的示例http://api.mongodb.com/c/0.4/tutorial.html –