【问题标题】:Find documents where any field matches a search string [duplicate]查找任何字段与搜索字符串匹配的文档[重复]
【发布时间】:2013-11-13 18:04:34
【问题描述】:

我在研究了 MongoDB 文本搜索和关键字索引后提出了这个问题。我还找到了similar question,但是向每个包含所有字段值的文档添加一个数组似乎是一个笨拙的解决方案。所以这个问题。

我们需要编写一个查询,该查询将返回任何字段与搜索字符串匹配的文档。

我们的第一个想法是按照以下思路编写查询:

db.collection.find( { field_one: /search string/i, 
                      field_two: /search string/i,
                      field_three: /search string/i } );

我们面临的挑战是文档之间的字段会有所不同,因此我们无法在查询中对字段名称进行硬编码。

以下伪代码可以用 MongoDB 实现吗?

db.collection.find( { [any field]: /search string/i } );

【问题讨论】:

  • 不,不可能在不知道字段名称的情况下搜索字段。这是典型的数据库 - 看起来您需要搜索引擎而不是数据库。
  • 嗨,Jedidiah - 你找到解决方案了吗?我也有同样的要求,我想在整个集合文档中搜索字符串,但我不知道字段名称(可能总是会改变)会是什么。请帮助...谢谢,Deepali
  • @user4567570 这是很久以前的事了,我不记得确切的细节了。但我很确定我们选择了.find({ $where: function () {...} }),因为我们查询的集合不是很大。请参阅此处以获取更多说明:stackoverflow.com/a/19802670/825421

标签: mongodb


【解决方案1】:

也许这不是您正在寻找的,但如果您正在考虑允许此类查询的架构重组,那么这篇文章似乎很有趣:

MongoDB Query Help - query on values of any key in a sub-object

【讨论】:

  • 该问题的任何一个答案都应该是我们可能的解决方案。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 2020-06-23
  • 2015-01-25
  • 2018-02-12
  • 2014-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多