Vvan_G
Vvan_G

Reputation: 215

Delete randomly selected N documents in a collection (MongoDB)

Could anybody please tell me what's the elegant way you would delete N randomly selected documents in a collection in a MongoDB database (through Python ideally)? I would like to use somewhat concise like this

db.users.remove({ $sample: { size: N } })

But this one doesn't parse and I couldn't find a working alternative anywhere else . Many thanks!

Upvotes: 0

Views: 1273

Answers (1)

nickmilon
nickmilon

Reputation: 1372

use aggregation to get your sample and store _id values to a list:

list_of_ids=list(db.users.aggregate([{'$sample': {'size': 10 }}, {'$project' : {'_id' : 1}} ]))

use delete_many to drop sample documents

results = db.users.delete_many({'_id: {'$in': list_of_ids}})

(*) make sure to check here for limitations of $sample

Upvotes: 1

Related Questions