MongoDB条件查询

时间:2016-09-27 21:11:56

标签: node.js mongodb mongoose-schema

我们希望使用两个字段(ID)查询集合,以查找具有userOne和/或userTwo且具有相同ID号的特定会话,就像我们要查找在userOne或userTwo中具有57e334af0e5fcc9e8e800177 id的所有会话

Mongoose Schema

 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 个答案:

答案 0 :(得分:1)

您只需要一个https://learn.sparkfun.com/tutorials/using-the-bluesmirf条件,因为它需要一个可以将两个字段放入的数组。从MongoDB文档中的示例:

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

所以你需要做的就是:

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