0
我在使用MongoDB的.sort()时遇到问题,因为它删除没有排序字段的文档。MongoDB sort()删除不包含排序过滤器的文档
例如,我有文件一些含有“timeSent”字段和一些不是数组:
db.foo.find() =
{
"_id": { "$oid" : "51f25e497363055d1fde7524" },
"eventID": 159,
"timeSent": 1374844250464
}
{
"_id": { "$oid" : "51f25e497363055d1fde7525" },
"eventID": 158,
"timeSent": 1374844250465
}
{
"_id": { "$oid" : "51f25e497363055d1fde7526" },
"eventID": 157
}
使用的.sort()删除其中“timeSent”不存在的文件。
db.foo.find()排序({ “timeSent”:1})。。跳过(0).limit(30)
我想知道是否有在蒙戈的方式排序并返回像SQL这样的完整文档。 (排序“timeSent现有的”顶部场和“timeSent不存在”的底部,或者反之亦然根据ASC或DESC)
感谢
附:一直试图使用MongoCursor在PHP中实现这一点。
您是否尝试过从mongo的控制台中查找并排序?我做了一个快速测试,并在结果中显示缺少字段的文档。 –
我会检查我的mongoDB版本是否是最新的,以及我是否使用最新的驱动程序。即使排序键不存在,Mongo排序命令也会返回文档。 – Munim
谢谢,我检查过这个版本是MongoDB的最新版本。 - 我发现问题发生在我确保索引时。如果您使用下面的命令尝试它,它将删除键不存在的位置。 db.foo.ensureIndex({'timeSent':1},{'unique':true,'sparse':true,'dropDups':true})有什么想法? – Jason