我尝试进行查询,但我不知道正确的方法。 mongo集合结构包含多个用户ID(uid),我想创建一个查询,获取用户ID与其中一个uid匹配的所有数据(“Albums”)。
我不知道这个系列的结构是否有用,我想知道我是否应该这样做。
{
"_id": ObjectId("55814a9799677ba44e7826d1"),
"album": "album1",
"pictures": [
"1434536659272.jpg",
"1434552570177.jpg",
"1434552756857.jpg",
"1434552795100.jpg"
],
"uid": [
"12814a8546677ba44e745d85",
"e745d677ba4412814e745d7b",
"28114a85466e745d677d85qs"
],
"__v": 0
}
我刚刚在互联网上搜索并找到了此文档http://docs.mongodb.org/manual/reference/operator/query/in/,但我不确定这是正确的方法。
简而言之,我需要知道:如果我使用正确的方法来收集集合并且运算符“$ in”是正确的解决方案(知道它可能有很多“用户ID”:2之间和2000最大)。
答案 0 :(得分:1)
除非您在字段中匹配多个可能的值,否则不需要$in
,并且该字段不必是数组。 $in
实际上是$or
的简写。
您只需要一个简单的查询:
Model.find({ "uid": "12814a8546677ba44e745d85" },function(err,results) {
})
如果您想要“多个”用户ID,则可以使用$in
:
Model.find(
{ "uid": { "$in": [
"12814a8546677ba44e745d85",
"e745d677ba4412814e745d7b",
] } },
function(err,results) {
}
)
这是$or
的缩写:
Model.find(
{
"$or": [
{ "uid": "12814a8546677ba44e745d85" },
{ "uid": "e745d677ba4412814e745d7b" }
]
},
function(err,results) {
}
)
答案 1 :(得分:0)
只是回答您的问题,您可以使用以下查询来获得所需的结果。
db.mycollection.find( {uid : {$in : ["28114a85466e745d677d85qs"] } } )
但是,您需要重新访问您的数据结构,看起来像是一个多对多问题,您可能需要考虑为此引入一个mid集合。