【发布时间】:2015-02-12 21:44:53
【问题描述】:
我在 MongoDB 中有一个集合,其中一个字段可以具有混合类型的值。现在我想对该字段应用范围查询,但它不会返回所有匹配的文档。
按value 字段对所有文档进行排序会返回数字值后跟字符串值,如the document 中所述。
> db.test.find().sort({ value: 1 })
{ "_id" : ObjectId("54dc639e498f5e13a42b0383"), "value" : 1 }
{ "_id" : ObjectId("54dc639e498f5e13a42b0384"), "value" : 2 }
{ "_id" : ObjectId("54dc639e498f5e13a42b0385"), "value" : 11 }
{ "_id" : ObjectId("54dc7757498f5e13a42b0386"), "value" : "3" }
但是当我使用范围查询时,它只返回 value 与查询中的值具有相同类型的文档。例如,下面的查询返回一个文档而不是两个。
> db.test.find({ value: { $gte: 11 } }).sort({ value: 1 })
{ "_id" : ObjectId("54dc639e498f5e13a42b0385"), "value" : 11 }
鉴于the document 说它使用与排序不同 BSON 类型相同的比较顺序,我觉得很奇怪。
在这种情况下有什么方法可以获取所有匹配的文档?
【问题讨论】:
标签: mongodb