2016-09-27 8 views
0

userOneまたはuserTwoMongoDB条件付きクエリ

に57e334af0e5fcc9e8e800177 idを持つすべての会話を検索する場合と同様に、2つのフィールド(ids)を使用して特定の会話を検索し、同じID番号のuserOneおよび/またはuserTwoを探したい場合

マングーススキーマ

userOne: {type: mongoose.Schema.Types.ObjectId, ref:'users'}, 
     userTwo: {type: mongoose.Schema.Types.ObjectId, ref:'users'}, 
     created_at: {type: Date, default: Date.now} 

我々がしようとしたクエリ。

db.getCollection('conversations').find({ 

     $or : [{userOne: "57e334af0e5fcc9e8e800177"}], 
     $or : [{userTwo: "57e334af0e5fcc9e8e800177"}] 

    }) 

サンプル会話オブジェクト

_id: "57eae04c4efbb25487a00293" 

created_at: "2016-09-27T21:10:36.236Z" 

userOne: "57e334c00e5fcc9e8e800178" 

userTwo: "57e334af0e5fcc9e8e800177" 

答えて

1

それはあなたがにあなたのフィールドの両方を置くことができる配列をとるので、あなたは、単一の$orの条件を必要としています。 MongoDBのドキュメント上の例から:

db.inventory.find({ $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] }) 

だから、あなたがする必要があると思いますすべてがある:

db.getCollection('conversations').find({ 
    $or: [ 
     {userOne: "57e334af0e5fcc9e8e800177"}, 
     {userTwo: "57e334af0e5fcc9e8e800177"} 
    ] 
}); 
+0

は、私の開発サーバー上で、あなたにその作品に感謝が、私はMongoDBのアトラスと接続していたときにそうではありませんあなたの助けてくれてありがとう、私はエラーを見つけるだろうデータを引き出す –