mongodb只找到指定的元素

时间:2013-08-20 11:37:21

标签: mongodb

我有这个架构

{
    cc: [
          { user_id: "1", hasSeen:true}
         ,{ user_id: "2", hasSeen:false}
         ,{ user_id: "3", hasSeen:false}

    ]
    ,conversation: [{
        user_id: "1",
        text: "message by 1, to 2and3"
    }]
}
,{
    cc: [
          { user_id: "1", hasSeen:true}
         ,{ user_id: "2", hasSeen:false}
         ,{ user_id: "3", hasSeen:false}
         ,{ user_id: "4", hasSeen:false}
    ]
    ,conversation: [{
        user_id: "1",
        text: "message by 1, to 2,3and4"
    }]
}

这是我设置“收件箱”数据库的方式。 要查找有用户“1”的对话,我使用此查询:

find({ cc:{$elemMatch:{ user_id:"1"}} })

并且效果很好,但它让我得到了两个结果。

现在我想找到用户1,2and3的元素。 如果我使用这个查询

find({ cc:{$elemMatch:{ user_id:"1", user_id:"2", user_id:"3" }} })

它让我回到第二个元素,女巫也包括用户4.(我不想得到它)。
我的意思是最后一个查询作为(sql)“或”运算符,我需要使用“和”运算符。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

以另一种方式解决,计算元素!

UserInbox.findOne( { 'cc.user_id': { $all: ["1","2","3"] }, cc:{ $size: 3 } } );

希望能帮助别人:)