我正在 MongoDB 上制作一个项目并插入一些文档,现在我正在通过此代码更新文档..
bson_init( query );
bson_append_string(query, "First", "A");
bson_append_string(query, "Second", "B");
bson_append_string(query, "Third", "C");
bson_append_string(query, "Fourth", "D");
bson_append_string(query, "Fifth", "E");
bson_finish(query );
bson_init( b );
bson_append_start_object(b,"$set");
if(checkBox_First->isChecked() == true)
bson_append_string( b, "First", "Z");
if(checkBox_Second->isChecked() == true)
bson_append_string( b, "Second", "X");
if(checkBox_Third->isChecked() == true)
bson_append_string( b, "Third", "R");
if(checkBox_Fourth->isChecked() == true)
bson_append_string( b, "Fourth", "Y");
if(checkBox_Fifth->isChecked() == true)
bson_append_string( b, "Fifth","P");
bson_append_finish_object( b );
bson_finish(b );
mongo_update(conn,TEST_NS,query,b,MONGO_UPDATE_BASIC,0);
bson_destroy(query);
bson_destroy(b);
代码工作正常,但更新后,文档按字母顺序存储。谁能告诉我如何在不按字母顺序排序的情况下更新文档。我正在使用 "$set"
更新参数。我正在使用 C 驱动程序。
最佳答案
确保顶级字段的顺序如您所愿的唯一方法是立即设置整个文档。如果文档中已有某些字段,$set
运算符无法指定要在文档中添加新字段的位置。
从下一个版本(2.6,目前作为不稳定开发版本 2.5.x 提供)开始,此行为将发生变化,并且文档中的字段将不会重新排序。根据您部署应用程序的时间,您可以尝试开发版本,一旦 2.6 发布,就使用该版本进行部署。
请注意,通常顶级字段顺序并不重要,并且通常无法保证。
关于c - 不按字母顺序更新 MongoDB 中的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20988872/