我正在尝试比较,排序,过滤等MongoDB ObjectID数组,以及基于数组对文档进行排序。我的主要问题是:我应该使用ObjectID.equals()
还是可以将它们全部转换为字符串,使用indexOf
之类的原生比较,然后将它们转换回来?这有关系吗?
我的具体用例:用户可以将帖子保存到列表中。我将其保存为ObjectID user.saves
的数组。我想按顺序检索前25个帖子,因此我查询{_id: {$in: user.saves.slice(0, 25)}}
。你会如何对检索到的文件进行排序?
答案 0 :(得分:2)
溶液:
db.collection.find({
$or: [{
_id: _id1
}, {
_id: _id2
}]
}, callback)
答案 1 :(得分:-4)
Mongodb中ObjectId的目的是唯一地标识文档。 你永远不应该使用它来进行排序操作,当然也不需要转换为字符串。
如果您只想获取按创建时间排序的文档列表。 您应该添加created_at(timestamp)字段,您可以在需要时使用它来对文档进行排序。
如果您不想添加额外字段。 ObjectId包含时间戳组件,因此您可以提取它并将其用于排序。但常见的方法是添加额外的字段。