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
但是,在以这种方式获取之前,我无法找到嵌入式数组元素的排序方式。更重要的是,我可以在切片之前改变排序吗?
答案 0 :(得分:3)
很遗憾,您目前无法做到这一点。 Mongodb $slice
始终返回默认情况下嵌套数组的文档(如何插入)订单,并且您无法应用任何其他订单。
一些注意事项:
在下一个示例中,过滤将仅应用于根文档,当您使用$ slice时,它会返回前5个注释,但不会匹配过滤器" comments.name
&#34;:< / p>
db.posts.find({"comments.name": "Test comment"}, {comments:{$slice: 5}})