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