2011-08-26 128 views
0
"user_crawls": { 
    "0": { 
     "_id": ObjectId("4e4b5e1c151c0d0336000093"), 
     "rand_id": "kPxMuXOY8Jfh6nXt", 
     "network": "tw", 
     "sourcenetwork": "874777", 
     "sourceName": "Krishna", 
    }, 
    "1": { 
     "_id": ObjectId("4e4b5e1c151c0d0336000094"), 
     "rand_id": "kPxMuXOY8Jfh6nXt", 
     "network": "fb", 
     "sourcenetwork": "145875", 
     "sourceName": "Krishna", 
    }, 
    "2": { 
     "_id": ObjectId("4e4b5e1c151c0d0336000095"), 
     "rand_id": "kPxMuXOY8Jfh6nXt", 
     "network": "fb", 
     "sourcenetwork": "145875", 
     "sourceName": "Ram", 
    } 

我想選擇網絡爲fb且sourcename爲Krishna的文檔。從abouve數據通常我想獲得結果的第二文檔id爲Mongo mapper(Mongo DB)嵌入式文檔多字段搜索

4e4b5e1c151c0d0336000094

但我得到的所有記錄

我用下面的代碼來收集數據

DdNetworkCrawlLink.limit(10).all(:conditions => {'user_crawls.network' => "fb",'user_crawls.sourceName' => "Krishna") 

感謝您的時間

Sreeraj

回答

-1

我想你錯過了':'字符。 在上mongomapper文檔,它說

Patient.all(:last_name => 'Johnson', :order => :last_name.asc) 
+0

這不會產生任何問題,我的問題不是 – Sreeraj

0

當蒙戈查詢只能查詢根文件。所以它也在MongoMapper中。

得到的只是那場比賽,你必須查詢所有的根文件,然後再拉嵌入文檔從他們的嵌入式文件:

DdNetworkCrawlLink 
.limit(10) 
.all('user_crawls.network' => "fb",'user_crawls.sourceName' => "Krishna") 
.map do |dbncl| 
    dcncl.user_crawls.select { |uc| uc.network == "fb" && uc.sourceName == "Krishna" } 
end.flatten 

因爲上面的代碼是如此令人費解,它的建議在嵌入式文檔始終與父代同時使用/顯示/需要時才嵌入文檔。