我有这个架构
{
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)“或”运算符,我需要使用“和”运算符。
有什么想法吗?
答案 0 :(得分:0)
以另一种方式解决,计算元素!
UserInbox.findOne( { 'cc.user_id': { $all: ["1","2","3"] }, cc:{ $size: 3 } } );
希望能帮助别人:)