gpt4 book ai didi

c - mongo 中 $push 的问题

转载 作者:行者123 更新时间:2023-11-30 17:06:26 26 4
gpt4 key购买 nike

我遇到了问题,但不知道如何解决。您能提供的任何帮助都会很棒,我确信我做错了一些愚蠢的事情。 :)

我正在尝试将一些项目 $push 到名为“subscribed_tribes”的数组中。这是我在进行任何推送之前的文档:

{ 
"_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);

如果我取消注释两行代码(bson_append 和 mongc_collection_update),则整个文档将被覆盖并替换为:

{ 
"_id" : ObjectId("5693c0196890f159c1741bb1"),
"testing" : "blah",
"subscribed_tribes" : [
{
"tribe_id" : "5624200d4bacd3940b8b2d62",
"tribe_key" : "27D719EDC7A59...."
}
]
}

有什么想法为什么原始代码没有正确地将数组项添加到 subscribed_tribes 中吗?其次,为什么包含未注释的行会覆盖整个文档?

我再一次确信我在做一些愚蠢的事情,但我只是不确定是什么。

最佳答案

subscribed_tribes 目前是一个字符串,而不是一个数组。这就是为什么您不能对其使用 $push 的原因。

如果您检查填充的 error 结果,您应该会收到一条相关错误消息。

因此,您的文档需要如下所示才能使 $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 - mongo 中 $push 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34730035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com