mongo slice,默认排序是什么,可以更改

时间:2012-02-08 08:26:24

标签: mongodb slice

Mongo有一个很好的运算符$ slice,让你只检索一个entiry嵌入式数组的子集。来自他们的官方文档:

db.posts.find({}, {comments:{$slice: 5}}) // first 5 comments
db.posts.find({}, {comments:{$slice: -5}}) // last 5 comments
db.posts.find({}, {comments:{$slice: [20, 10]}}) // skip 20, limit 10
db.posts.find({}, {comments:{$slice: [-20, 10]}}) // 20 from end, limit 10

但是,在以这种方式获取之前,我无法找到嵌入式数组元素的排序方式。更重要的是,我可以在切片之前改变排序吗?

1 个答案:

答案 0 :(得分:3)

很遗憾,您目前无法做到这一点。 Mongodb $slice始终返回默认情况下嵌套数组的文档(如何插入)订单,并且您无法应用任何其他订单。

一些注意事项:

  1. 嵌入式数组始终保持其顺序(插入项目时)
  2. 目前,如果您对嵌入的数组值进行过滤,mongodb将返回所有嵌套数组值,而不仅仅是匹配的。请参阅jira bug
  3. 中的详细信息

    在下一个示例中,过滤将仅应用于根文档,当您使用$ slice时,它会返回前5个注释,但不会匹配过滤器&#34; comments.name&#34;:< / p>

    db.posts.find({"comments.name": "Test comment"}, {comments:{$slice: 5}})