Skip and Limit on nested array element

2020-07-09 10:23发布

问题:

I want to apply skip and limit for paging in nested array of a document how can I perform this [Efficient Way]

My Document recored like

{
   "_id":"",
   "name":"",
   "ObjectArray":[{
       "url":"",
       "value":""
   }]
}

I want to retrieve multiple document and every document contain 'n' number of record.

I am using $in in find query to retrieve multiple record on basis of _id but how can i get certain number of element of ObjectArray in every document?

回答1:

You can try like this -

db.collection.find({}, {ObjectArray:{$slice:[0, 3]}})

This will provide you records from 0..3

$slice:[SKIP_VALUE, LIMIT_VALUE]}

For your example:-

db.collection.find({"_id":""}, {ObjectArray:{$slice:[0, 3]}})

Here is the reference for MongoDB Slice feature. http://docs.mongodb.org/manual/reference/operator/projection/slice/