【发布时间】:2014-05-13 20:19:10
【问题描述】:
如何根据布尔字段对查询结果进行排序?
考虑以下集合:
{ "_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 文档。换句话说,我需要按布尔字段排序。
以下代码无法解决问题,因为我仍然得到一些带有isFoo == true 的文档与虚假文档混合在一起。
db["users"].find().sort( { isFoo: 1 } )
想法?
【问题讨论】:
-
我刚刚在 mongodb v2.2.0 上对其进行了测试,并且可以正常工作。 (我使用本机控制台进行测试,而不是猫鼬)
-
它在 v2.4.9 中也可以正常工作。
sort({isFoo:1})先返回假文件,sort({isFoo:-1})先返回真文件。 -
一头扎进墙 原来我在集合中有一些错误的文档,其中字段 isFoo 已注册为字符串。现在我必须弄清楚如何更改字段的类型。
-
快速 forEach 查找所有 BSON 类型而不是 bool 应该这样做
标签: mongodb sorting mongoose database