問題が発生していますが、修正方法がわかりません。あなたが提供できるどんな助けも素晴らしいでしょう、私はそれが私が間違っている愚かなことだと確信しています. :)
「subscribed_tribes」というタイトルの配列にいくつかのアイテムを $push しようとしています。プッシュ前の私のドキュメントは次のとおりです。
{
"_id" : ObjectId("5693fc1f6890f14daa0e26e1"),
"password" : "7CAE......",
"salt" : "748D...",
"created" : ISODate("2016-01-11T19:01:51.000+0000"),
"display_name" : "2686....",
"my_tribes" : "",
"subscribed_tribes" : ""
}
次の c コードを実行しても何も起こりません (変更なし)。
collection = mongoc_client_get_collection (client, "STribe", "users");
query = bson_new ();
bson_oid_t oid;
char *techSupportID = "5693c0196890f159c1741bb1";
bson_oid_init_from_string (&oid, techSupportID);
query = BCON_NEW ("_id", BCON_OID(&oid));
// Find the document
cursor = mongoc_collection_find (collection, MONGOC_QUERY_NONE, 0, 0, 0, query, NULL, NULL);
update = bson_new ();
//BSON_APPEND_UTF8 (update, "testing", "blah");
//mongoc_collection_update (collection, MONGOC_UPDATE_NONE, query, update, NULL, &error);
// Assemble query
update = BCON_NEW ("$push",
"{",
"subscribed_tribes",
"{",
"tribe_id", BCON_UTF8 (tribe_id),
"tribe_key", BCON_UTF8 (passphrase),
"}",
"}");
mongoc_collection_update (collection, MONGOC_UPDATE_NONE, query, update, NULL, &error);
コードの 2 行 (bson_append と mongc_collection_update) のコメントを外すと、ドキュメント全体が上書きされ、次のように置き換えられます。
{
"_id" : ObjectId("5693c0196890f159c1741bb1"),
"testing" : "blah",
"subscribed_tribes" : [
{
"tribe_id" : "5624200d4bacd3940b8b2d62",
"tribe_key" : "27D719EDC7A59...."
}
]
}
元のコードが配列項目をsubscribed_tribesに正しく追加しない理由はありますか? 次に、コメントを外した行を含めるとドキュメント全体が上書きされるのはなぜですか?
繰り返しますが、私は何かばかげたことをしていると確信していますが、何をしているのかわかりません。