我的收藏说“myfollower”如下: -
{
'_id':ObjectId('15423748234'),
'userid':12,
'follower_id':[1,2,3,4,5,6]
}
现在,我想找到包含用户ID“4”的所有文档作为关注者。如何才能做到这一点?
答案 0 :(得分:4)
可以使用以下内容:
db.myfollower.find({"follower_id" : {"$in" : [4]}})
答案 1 :(得分:1)
如果您只是寻找一个特定的“follower_id”,那么正确的答案是:
db.myfollower.find({follower_id : 4})
以下查询:
db.myfollower.find({"follower_id" : {"$in" : [4]}})
有另一个目的。
第一个查询测试 follower_id 的任何值是4.如果字段 follower_id 是一个数组。
第二个查询测试follower_id的任何值是$ in的任何值。在最后一个查询中,您正在进行N对N匹配。 $ in运算符执行x-to-N查询,如果 follower_id 中有一个值,则x = 1;如果 follower_id 中有N值,则为N. / p>
让我们看一个例子。
这是数据集: 以下是查询和匹配结果:{
"_id" : ObjectId("52e7e35f4c735353309cf077"),
"userid" : 12,
"follower_id" : 4
}
{
"_id" : ObjectId("52e7e3784c735353309cf078"),
"userid" : 12,
"follower_id" : [ 1, 2, 3, 4, 5, 6 ]
}
> db.followers.find({"follower_id":4})
{ "_id" : ObjectId("52e7e35f4c735353309cf077"), "userid" : 12, "follower_id" : 4 }
{ "_id" : ObjectId("52e7e3784c735353309cf078"), "userid" : 12, "follower_id" : [ 1, 2, 3, 4, 5, 6 ] }
> db.followers.find({"follower_id":5})
{ "_id" : ObjectId("52e7e3784c735353309cf078"), "userid" : 12, "follower_id" : [ 1, 2, 3, 4, 5, 6 ] }
> db.followers.find({"follower_id":{$in:[4]}})
{ "_id" : ObjectId("52e7e35f4c735353309cf077"), "userid" : 12, "follower_id" : 4 }
{ "_id" : ObjectId("52e7e3784c735353309cf078"), "userid" : 12, "follower_id" : [ 1, 2, 3, 4, 5, 6 ] }
> db.followers.find({"follower_id":{$in:[4, 5]}})
{ "_id" : ObjectId("52e7e35f4c735353309cf077"), "userid" : 12, "follower_id" : 4 }
{ "_id" : ObjectId("52e7e3784c735353309cf078"), "userid" : 12, "follower_id" : [ 1, 2, 3, 4, 5, 6 ] }
> db.followers.find({"follower_id":{$in:[5, 6]}})
{ "_id" : ObjectId("52e7e3784c735353309cf078"), "userid" : 12, "follower_id" : [ 1, 2, 3, 4, 5, 6 ] }