我正在构建一个流星社交网络类型的应用程序,它需要在集合的顶部而不是底部插入文档。我怎样才能做到这一点?它必须像JS unshift()
答案 0 :(得分:2)
你不应该依赖MongoDB文件" natural"订单,因为它不可预测(MongoDB引擎随时可以移动文档)。
在您的收藏架构中添加另一个专门用于排序的字段,例如类型为createdAt
的{{1}}或Date
类型的order
,并在显示您的文档时,使用Mongo Number
子句。
虽然在sort
字段之间保持一致性,但仍有开销。
答案 1 :(得分:2)
没有" top"一个集合,除了capped collection's。
您需要做的是在进行查询时根据字段对集合进行排序。
所以例如像这样插入的文件
db.enemies.insert({ name: "Zod"})
db.enemies.insert({ name: "Lex Luthor"})
当像这样查询时,将以适当的字母顺序返回
db.enemies.find({}).sort({name:1})
对于大型馆藏,您希望在搜索条件和排序条件(排序问题!)上创建compound index以加快速度
db.collection.ensureIndex({queryField1:1, queryField2:1, sortField1:1, sortField2:-1})