我是 mongoid 的初学者,所以我为这个基本问题道歉。
我正在寻找一个抛出 mongoDB 查询的 mongoid 语句,如下所示:
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"])
2013/05/04 更新
对不起。我提交问题时没有掌握实际情况。但现在我明白发生了什么并解决了这个问题。我为那些在同一问题上苦苦挣扎的人更新了这个问题。
问题出在我对“嵌入”和“引用”的误解。
在上述情况下,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
orin
方法获取任何文档的原因。据我了解,我无法仅user
通过一个查询来获取文档mycollection
,因为 MongoDB 不是 RDBMS,也不支持这种关系查询。
MyCollection.in("status.user.name" => ["jack", "mary"]).size
=> 0