在节点中比较和排序MongoDB ObjectID - 转换为字符串?

时间:2012-08-07 04:59:50

标签: node.js mongodb

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

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

2 个答案:

答案 0 :(得分:2)

溶液:

db.collection.find({
  $or: [{
    _id: _id1
  }, {
    _id: _id2
  }]
}, callback)

答案 1 :(得分:-4)

Mongodb中ObjectId的目的是唯一地标识文档。 你永远不应该使用它来进行排序操作,当然也不需要转换为字符串。

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

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