1

我想获取附近的 100 个用户,但我想删除当前被阻止的用户,这样如果有 10 个被阻止的用户,则返回的用户不会是 90,而是 100...

我写了这个查询(使用 mongojs 作为节点):

db.users.find({location: {$near: [lng, lat]}, _id:{$ne: ObjectId('4ffeff845d46eaf1aa000002')}}, function(err, docs) {
    if(!err) {
        res.json(users);
    };

}).limit(100);

这有效,但仅适用于一个被阻止的用户,我在用户文档中有一个字段,以便用户可以阻止多个用户:

{
    ...
    blockedUsers: ['4ffeff845d46eaf1aa000002', '4ffeff845d46eaf1aa000012',....]
}

我已经厌倦了在 $ne 之后添加一个 ObjectId 的数组,但它什么也没做,我也厌倦了使用 || 拆分所有 ObjectId 的变量 这也没有奏效。

我的问题是我将如何查询 mongodb 以查找最近限制为 100 的用户,删除被阻止的用户,因此如果我在查询后要删除它们,它实际上返回 100 而不是减去被阻止的用户?

4

1 回答 1

2

你检查过 $nin 运算符吗? http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24nin

于 2012-07-12T21:17:29.860 回答