2011-08-26 93 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 

因为上面的代码是如此令人费解,它的建议在嵌入式文档始终与父代同时使用/显示/需要时才嵌入文档。