Mongoid Return 文档中数组中的特定对象
Mongoid Return Specific Object from Array in Document
这看起来应该很简单,但我已经为此苦苦挣扎了一段时间,但运气不佳。
假设我有一个如下所示的简单文档:
{
data: [
{
name: "Minnesota",
},
{
name: "Mississippi",
},
...
]
}
如果我 运行 在我的 Mongo Shell 中执行以下查询,一切都会如我所料:
db.collection.find({}, {data: {$elemMatch: {name: "Michigan"}}})
Returns:
{ "_id" : ObjectId("5e9ba60998d1ff88be83fffe"), "data" : [ { "name" : "Michigan" } ] }
但是,使用mongoid
,试图运行 类似查询returns 数据数组内的每个对象。这是我尝试过的可能查询之一:
Model.where({data: {"$elemMatch": {name: "Michigan"}}}).first
正如我上面提到的,那个小查询 returns 数据数组中的所有内容,而不是我试图从文档中提取的特定对象。
如有任何帮助,我们将不胜感激。我试图避免返回结果和 post- 使用 Ruby 处理它们。我很乐意在数据库级别处理这个问题。
谢谢。
之前有一个非常相似的问题是针对不同的驱动程序的。显然 ruby 驱动程序的行为不同于 shell.
尝试 运行 您的查找作为等效的数据库命令:
session.command({'find' => 'my_collection', 'filter' => {}, projection => {data: {$elemMatch: {name: "Michigan"}}}})
投影的 Mongoid 语法是 only。
这看起来应该很简单,但我已经为此苦苦挣扎了一段时间,但运气不佳。
假设我有一个如下所示的简单文档:
{
data: [
{
name: "Minnesota",
},
{
name: "Mississippi",
},
...
]
}
如果我 运行 在我的 Mongo Shell 中执行以下查询,一切都会如我所料:
db.collection.find({}, {data: {$elemMatch: {name: "Michigan"}}})
Returns:
{ "_id" : ObjectId("5e9ba60998d1ff88be83fffe"), "data" : [ { "name" : "Michigan" } ] }
但是,使用mongoid
,试图运行 类似查询returns 数据数组内的每个对象。这是我尝试过的可能查询之一:
Model.where({data: {"$elemMatch": {name: "Michigan"}}}).first
正如我上面提到的,那个小查询 returns 数据数组中的所有内容,而不是我试图从文档中提取的特定对象。
如有任何帮助,我们将不胜感激。我试图避免返回结果和 post- 使用 Ruby 处理它们。我很乐意在数据库级别处理这个问题。
谢谢。
之前有一个非常相似的问题是针对不同的驱动程序的。显然 ruby 驱动程序的行为不同于 shell.
尝试 运行 您的查找作为等效的数据库命令:
session.command({'find' => 'my_collection', 'filter' => {}, projection => {data: {$elemMatch: {name: "Michigan"}}}})
投影的 Mongoid 语法是 only。