2013-06-19 63 views
2

我需要從查詢中選擇用戶的相應數據。mongoDB從關係集合中選擇

我有這個集合在我的DB(兩列以上是我的查詢的輸出也一樣)

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

回答

1

好吧,我finalllly找出problem.For未來的讀者:

  1. 檢查是否已啓用自動發佈或禁用。
  2. 如果被禁用,您需要從DB

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

就是這樣!

P.S:我覺得沒有什麼錯在這一點,但我知道對不對? :)所以如果有人知道更好的方式,請發表評論。如果沒有給我知道它是否對你有用:)

0

根據蒙戈手冊,使用$in操作:http://docs.mongodb.org/manual/reference/operator/in/#op._S_in

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

是代碼(檢查更新問題)一個很好的解決方案? – EnchanterIO

+0

因爲它返回: 「3MTmHcJNEzaaS8hrd」, 「SoTozuZ4nWooRBeFz」],但我仍然不能做你的代碼:db.inventory.find({數量:{$於:followeeIds}}).Count之間()返回0 – EnchanterIO

+0

好我認爲問題會在別的地方......因爲我無法從服務器端訪問用戶集合。它由帳戶ui包,但我不知道如何啓用發佈集合hm ... – EnchanterIO