0

我在使用 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().sort({ "timeSent": 1}).skip(0).limit(30)

我想知道 Mongo 是否有办法排序并返回完整的文档,如 SQL。(对顶部的“timeSent existing”字段和底部的“timeSent not existing”进行排序。反之亦然,具体取决于 ASC 或 DESC)

谢谢

ps 一直在尝试使用 MongoCursor 在 PHP 中实现这一点。

4

1 回答 1

3

Mongo 可能sparse在您之前定义的过滤字段上使用索引:explain确保在游标上使用。

您可以告诉 Mongo不要使用该索引,或者重建索引,包括没有键的字段(即,您创建一个非sparse索引)。

(对不起之前的答案,我把它弄反了......)

于 2013-08-01T13:45:41.497 回答