gpt4 book ai didi

MongoDB v2.4.9 按 bool 字段排序

转载 作者:IT老高 更新时间:2023-10-28 13:16:28 25 4
gpt4 key购买 nike

如何根据 bool 字段对查询结果进行排序?

考虑以下集合:

{ "_id" : ObjectId("..."), "name" : "John" , "isFoo" : true}
{ "_id" : ObjectId("..."), "name" : "Jim" , "isFoo" : false}
{ "_id" : ObjectId("..."), "name" : "Joel" , "isFoo" : false}
{ "_id" : ObjectId("..."), "name" : "Jill" , "isFoo" : true}
{ "_id" : ObjectId("..."), "name" : "Samantha" , "isFoo" : true}

我需要一个查询,该查询将首先返回 isFoo == true,然后返回 isFoo == false 文档。换句话说,我需要按 bool 字段排序。

以下代码不能解决问题,因为我仍然得到一些带有 isFoo == true 的文档与错误的文档混合在一起。

db["users"].find().sort( { isFoo: 1 } )

想法?

最佳答案

上面的代码有效,我的数据很糟糕。正如我在上面的评论中所写,一些文档将 isFoo 作为字符串(不是 bool 值),这就是我看到混合结果的原因。

我不得不将字段的类型从 String 更改为 Boolean,所以我尝试了这个:

db.users.find( { 'isFoo' : { $exists : true } } ).forEach( function (x) {   x.isFoo = new Boolean(x.isFoo);    db.users.save(x); });

但这只是将所有 isFoo 字段都变成了对象。

看到我真的厌倦了处理这个问题,我只是使用以下内容将所有 isFoo 字段设置为 false 并手动处理更改。

db.users.find( { 'isFoo' : { $exists : true } } ).forEach( function (x) {   x.isFoo = false;    db.users.save(x); });

这很烦人。

关于MongoDB v2.4.9 按 bool 字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22813322/

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