我是mongoid的初学者,所以我为基本问题道歉。
我正在寻找一个mongoid语句,它会抛出如下的mongoDB查询:
db.mycollection.find({"status.user.name": {$in:["jack","mary"]}}
mongoDB中的mycollection中有两个文档
{ "status": {"user: {:name : "jack"}} }
{ "status": {"user: {:name : "mary"}} }
我尝试使用mongoid进行以下查询,但它没有获取任何文档:
MyCollection.where("status.user.name" => {'$in' => ["jack","mary"]})
MyCollection.in("status.user.name" => ["jack","mary"])
对不起提交问题时我没有掌握实际情况。但现在我明白发生了什么并解决了这个问题。我为那些在同一问题上挣扎的人更新了问题。
问题来自于我对“嵌入”和“引用”的误解。
在上述情况中,user
嵌入了mycollection
。然后,in
方法可以获取所有两个文档。
MyCollection.in("status.user.name" => ["jack", "mary"]).size
=> 2
但是,在我的实际情况中,mycollection
刚刚引用了user
集合。
mycollection collection
{ "status": {"user_id": xyzxyz} }
{ "status": {"user_id": abcabc} }
user collection
{ "_id":xyzxyz, "name": "jack" }
{ "_id":abcabc, "name": "mary" }
这就是我无法使用where
或in
方法获取任何文档的原因。根据我的理解,我无法通过user
仅使用一个查询获取mycollection
文档,因为MongoDB不是RDBMS,并且不支持这种关系查询。
MyCollection.in("status.user.name" => ["jack", "mary"]).size
=> 0
答案 0 :(得分:0)
怎么样:
MyCollection.in(status.user.name: [ "jack", "mary" ]).find();