如何通过多个条件精准定位Mongoid数据库中的嵌套文档?

2026-04-11 17:130阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计188个文字,预计阅读时间需要1分钟。

如何通过多个条件精准定位Mongoid数据库中的嵌套文档?

我有一个包含嵌入文档的Mongoid文档。我想搜索其中所有存在特定条件的嵌入式文档的顶级文档。使用`TopDoc.where('inside.first_name'='Bob', 'inside.last_name'='Jones')`,但看起来这将与Bob Wever和P匹配。

我有一个包含嵌入文档的Mongoid文档.我想搜索其中所有存在具有多个条件的嵌入式文档的顶级文档.

TopDoc.where('inside.first_name' => 'Bob', 'inside.last_name' => 'Jones')

但在我看来,这将与Bob Wever和Paul Jones的TopDoc相匹配,这是错误的.

您需要使用 $elemMatch.使用Mongoid,以下行应该可以解决问题

如何通过多个条件精准定位Mongoid数据库中的嵌套文档?

TopDoc.elem_match(inside: { first_name: 'Bob', last_name: 'Jones' })

这相当于:

TopDoc.where(:inside.elem_match => { first_name: 'Bob', last_name: 'Jones'})

本文共计188个文字,预计阅读时间需要1分钟。

如何通过多个条件精准定位Mongoid数据库中的嵌套文档?

我有一个包含嵌入文档的Mongoid文档。我想搜索其中所有存在特定条件的嵌入式文档的顶级文档。使用`TopDoc.where('inside.first_name'='Bob', 'inside.last_name'='Jones')`,但看起来这将与Bob Wever和P匹配。

我有一个包含嵌入文档的Mongoid文档.我想搜索其中所有存在具有多个条件的嵌入式文档的顶级文档.

TopDoc.where('inside.first_name' => 'Bob', 'inside.last_name' => 'Jones')

但在我看来,这将与Bob Wever和Paul Jones的TopDoc相匹配,这是错误的.

您需要使用 $elemMatch.使用Mongoid,以下行应该可以解决问题

如何通过多个条件精准定位Mongoid数据库中的嵌套文档?

TopDoc.elem_match(inside: { first_name: 'Bob', last_name: 'Jones' })

这相当于:

TopDoc.where(:inside.elem_match => { first_name: 'Bob', last_name: 'Jones'})