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);

これは機能しますが、ブロックされた1人のユーザーに対してのみ、ユーザーが複数のユーザーをブロックできるように、ユーザードキュメントにフィールドがあります。

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

$ neの後にObjectIdの配列を追加するのに疲れましたが、何もしません。また、すべてのObjectIdが||で分割された変数を持つのにも疲れました。そしてそれもうまくいきませんでした。

私の質問は、100に制限されている最も近いユーザーをmongodbにクエリし、ブロックされているユーザーを削除して、クエリを実行した後にブロックされたユーザーを削除した場合、ブロックされたユーザーを差し引いたものではなく、実際に100を返すようにするにはどうすればよいですか?

4

1 に答える 1

2

$ nin演算子を確認しましたか? http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24nin

于 2012-07-12T21:17:29.860 に答える