查询userID为多个ID的数据

时间:2015-06-18 08:49:50

标签: node.js mongodb mongoose

我尝试进行查询,但我不知道正确的方法。 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最大)。

2 个答案:

答案 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集合。