过滤后的Mongodb $ sample

db2*_*791 3 mongodb mongodb-query aggregation-framework

假设我想要一个人找到他们没有联系的人,我会这样做:

User.find({ _id: { $nin: req.user.connections })
Run Code Online (Sandbox Code Playgroud)

但是,我只想从返回中检索最多10个随机文档.在MongoDB中,有$ sample:

{ $sample: { size: <positive integer> } }
Run Code Online (Sandbox Code Playgroud)

我以前从未使用过Mongo,所以我不确定如何将这两个链接在一起以便我检索当前用户未连接的10个随机人员.

Joh*_*yHK 7

$sample是一个聚合运算符,因此您需要创建一个aggregate将两个操作链接在一起的管道:

User.aggregate([
    { $match: { _id: { $nin: req.user.connections } } },
    { $sample: { size: 10 } }
])
Run Code Online (Sandbox Code Playgroud)