mongoDB从带有关系的集合中选择

时间:2013-06-19 08:56:35

标签: mongodb select collections

我需要从查询中选择相应数据的用户。

我的数据库中有这个集合(我的查询也输出了两行或更多行)

> db.Friends.find()
{ "userId" : "k3XCWdN5M2pbzBiFD", "followeeId" : "3MTmHcJNEzaaS8hrd","_id" :  "aiRD.." }
{ "userId" : "k3XCWdN5M2pbzBiFD", "followeeId" : "SoTozuZ4nWooRBeFz","_id" :  "QingX.."    }

当它只是一个结果作为findOne(...)时,第二个查询将如下所示:

users.findOne({ _id: firstQueryResult.followeeId })

但现在的问题是......如果我没有一个followeeId但是更多的用户,我如何从用户集合中选择用户?

请有人给我看一个代码示例。

我的研究: 这是一个很好的解决方案吗?

friendsData.forEach(function(relationShip) {
    followeeIds.push(relationShip.followeeId);
});
console.log(followeeIds);

2 个答案:

答案 0 :(得分:1)

好的,我终于弄明白了这个问题。对于下一位读者:

  1. 检查是启用还是禁用自动发布。
  2. 如果已禁用,则需要从数据库

    发布集合
    Meteor.publish("userData", function () {
        return Meteor.users.find({},
                       {fields: {'username': 1}});
    });
    

    PS:我想只发布用户名字段,那就是全部!

  3. 您还需要订阅数据!

    Meteor.subscribe("userData");
    
  4. 现在您可以通过以下方式访问其他用户数据:

    users= Meteor.users.findOne({username: "Nolifer"});
    
  5. 对于我原来的问题......我可能会使用这个函数来迭代多行的结果(它更像是一个SQL术语,但我不确定在mongoDb中使用哪个术语可能是一个文档?无论如何):

    users.forEach(function(user) {
        console.log(user);
    });
    
  6. 多数民众赞成!

    P.S。:我认为这没有什么不妥,但我知道对吗? :)所以,如果有人知道更好的方式,请发表评论。如果没有告诉我它是否对你有用:)

答案 1 :(得分:0)

根据mongo手册,使用$in操作数:http://docs.mongodb.org/manual/reference/operator/in/#op._S_in

db.inventory.find( { qty: { $in: [ 5, 15 ] } } )