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