1

我是 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" }

这就是为什么我无法使用whereorin方法获取任何文档的原因。据我了解,我无法仅user通过一个查询来获取文档mycollection,因为 MongoDB 不是 RDBMS,也不支持这种关系查询。

MyCollection.in("status.user.name" => ["jack", "mary"]).size
=> 0
4

1 回答 1

0

怎么样:

MyCollection.in(status.user.name: [ "jack", "mary" ]).find();
于 2013-05-03T16:02:44.017 回答