2

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

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

> 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);
4

2 回答 2

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);
    });
    

而已!

PS:我认为这没有错,但我知道的对吗?:) 所以如果有人知道更好的方法,请发表评论。如果不告诉我它是否对你有用:)

于 2013-06-19T10:24:36.190 回答
0

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

db.inventory.find( { qty: { $in: [ 5, 15 ] } } )
于 2013-06-19T08:58:48.267 回答