1

我正在尝试比较、排序、过滤等 MongoDB ObjectID 数组以及基于数组的文档排序。我的主要问题是:我应该使用ObjectID.equals()还是可以将它们全部转换为字符串,使用原生比较,如indexOf,然后将它们转换回来?有关系吗?

我的具体用例:用户可以将帖子保存到列表中。我将其保存为 ObjectIDs 数组user.saves。我想按顺序检索前 25 个帖子,所以我查询{_id: {$in: user.saves.slice(0, 25)}}. 您将如何对检索到的文档进行排序?

4

2 回答 2

2

解决方案:

db.collection.find({
  $or: [{
    _id: _id1
  }, {
    _id: _id2
  }]
}, callback)
于 2012-12-02T00:50:59.033 回答
-5

Mongodb 中 ObjectId 的目的是唯一标识一个文档。您永远不需要将它用于排序操作,当然不要转换为字符串。

如果您只想获取按创建时间排序的文档列表。您应该添加 created_at (timestamp) 字段,您可以在需要时使用它对文档进行排序。

如果您不想添加额外的字段。ObjectId 包含时间戳组件,因此您可以提取它并将其用于排序。但常见的方法是添加额外的字段。

于 2012-08-07T08:02:10.193 回答