Re: Restrict number of record in mongoDb collection.

From: Wan Bachtiar <wan.bachtiar@xxxxxxxxxxx>
To: mongodb-user <mongodb-user@xxxxxxxxxxxxxxxx>
Date: Thu, 14 Apr 2016 20:55:38 -0700 (PDT)
Why ads?


Is it possible through any mongoDb feature ?

Hi Yuvraj, 

Depending on your use case, you could try modifying your schema to group 
ExternalId values together in a single document. Each document would then 
have an array field to contain max of 4 records. For example:

{'ExternalId': 12,
 'records': [ { value:1, date: ISODate(" ") }, { value:2, date: ISODate(" ") }, ...
            ] }
{'ExternalId': 13,
 'records': [ { value:1, date: ISODate(" ") }, ... 
            ] }

Then you can limit the number of elements in the array after an update 
<https://docs.mongodb.org/manual/tutorial/limit-number-of-elements-in-updated-array/
by utilising $each 
<https://docs.mongodb.org/manual/reference/operator/update/each/#up._S_each>, 
$sort 
<https://docs.mongodb.org/manual/reference/operator/update/sort/#up._S_sort
and $slice 
<https://docs.mongodb.org/manual/reference/operator/update/slice/#up._S_slice>. 
For example: 

db.collection.update(
    { externalId: 12 }, 
    { $push: { 
        records: {
            $each:[ {value: 3, date: new Date() } ], 
            $sort:{ date : 1 }, 
            $slice: -4
        }
      }
    }
)

The $slice modifier will keep the last 4 elements of the ordered records 
array. 

Regards, 

Wan. 


-- 
You received this message because you are subscribed to the Google Groups "mongodb-user"
group.

For other MongoDB technical support options, see: https://docs.mongodb.org/manual/support/
--- 
You received this message because you are subscribed to the Google Groups "mongodb-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mongodb-user+unsubscribe@xxxxxxxxxxxxxxxx.
To post to this group, send email to mongodb-user@xxxxxxxxxxxxxxxx.
Visit this group at https://groups.google.com/group/mongodb-user.
To view this discussion on the web visit https://groups.google.com/d/msgid/mongodb-user/8ec36ad5-f6fe-4852-b2b1-673f84a7922d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Why ads?