我正在使用mongoid any_of查询来查找预约status_selected为“option1”或者source source_selected为“opt4”的潜在客户。我有一份符合此标准的主要文件:
> db.leads.find()
{ "_id" : ObjectId("556e4f576d61638512060000"), "appointment status_selected" : "option1", "lead source_selected" : "opt2", "updated_at" : ISODate("2015-06-03T00:50:31.029Z"), "created_at" : ISODate("2015-06-03T00:50:31.029Z") }
但是,当我使用mongoid查询助手进行查询时,我得不到任何结果:
Lead.where({"appointment status_selected" => "option1"}).any_of({"lead source_selected" => "opt4" }).first
# => nil
这是轻便摩托车的表现:
MOPED:127.0.0.1:27017 QUERY database = core_development collection = leads selector = {“appointment status_selected”=>“option1”, “$或”=> [{“lead source_selected”=>“opt4”}]} flags = [] limit = -1 skip = 0 batch_size = nil fields = {:_ id => 1}运行时间:13.7830ms MOPED: 127.0.0.1:27017 QUERY database = core_development collection = leads selector = {“appointment status_selected”=>“option1”, “$或”=> [{“lead source_selected”=>“opt4”}]} flags = [] limit = 0 skip = 0 batch_size = nil fields = nil runtime:4.1470ms
为什么Mongoid没有在MongoDB中返回该记录?
答案 0 :(得分:0)
我会试试这个:
Lead.any_of({"appointment status_selected" => "option1"}, {"lead source_selected" => "opt4"}).first
虽然我不熟悉Mongoid
(或者更确切地说,Origin
),但从我能读到的Origin docs on selection开始,至少有一个$or
对于要返回的行,条件必须为true。由于您只为#any_of
来电提供了一个标准,因此也可能是另一个#where
来电。
答案 1 :(得分:0)
您已要求 Mongo 返回 "appointment status_selected": "option1"
为真的所有文档,以及 any_of
的参数中的至少一个语句。由于只有一个参数,这个参数必须为真才能返回文档。但是,您的文档有 lead source_selected: 'opt2'
,因此不匹配。