在多个字段中搜索MongoDB中的多个值

杰姆唐纳德

我有一个MongoDB集合,其中特定的字符串可能出现在许多字段中的任何一个中:

{"_id":1, "field1":"foo","field2":"bar","field3":"baz", "otherfield":"stuff"},
{"_id":2, "field1": "bar", "field2": "baz", "field3": "foo", "otherfield":"morestuff"},
{"_id":3, "field1": "baz", "field2": "foo", "field3": "bar", "otherfield":"you get the idea"}

我需要查询,以便我返回所有记录,其中一组字段中的任何一个都等于数组中的任何值...基本上,如果["foo","bar"]我需要匹配这些字符串中的任何一个,则这些记录是否在field1或field2中(但没有其他字段)。

显然,我可以通过一系列多个查询来做到这一点

db.collection.find({"field1":{"$in":["foo","bar"]}}) db.collection.find({"field2":{"$in":["foo","bar"]}})

等,并且我也做了一个非常大的$ or查询,将它们全部串联在一起,但是效率似乎太低了(我的实际集合需要匹配9个字段中可能出现的15个字符串中的任何一个)...但是我还是nosql DB的新手,不确定我需要在这里使用的最佳范例。任何帮助是极大的赞赏。

杰姆唐纳德

通过仔细阅读似乎很吸引人的文档找到了另一个答案-文本索引。

db.collection.ensureIndex({"field1":"text","field2":"text"})
db.records.runCommand("text",{search:"foo bar"})

当我使用更多的字符串和字段(以及大约100,000条记录)运行实际查询时,该$or/$in方法花费620毫秒,而文本索引花费131毫秒。一个缺点是结果是它返回了另一种类型的文档。幸运的是,实际文档是每个结果对象的参数。

感谢那些花时间提出建议的人。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SOLR:在多个字段中搜索值

来自分类Dev

在多个字段中搜索单个值

来自分类Dev

在MongoDB中更新多个字段的值

来自分类Dev

Django在具有多个值的多个字段中搜索

来自分类Dev

使用MeteorJS在MongoDB中搜索多个字段

来自分类Dev

使用MeteorJS在MongoDB中搜索多个字段

来自分类Dev

在多个字段中搜索精确的数组值

来自分类Dev

在Kibana / ElasticSearch中搜索多个字段

来自分类Dev

从多个字段中搜索查询MySQL

来自分类Dev

如何从多个字段中搜索?

来自分类Dev

MongoDB查询集合中的多个字段

来自分类Dev

在MongoDB中按多个字段分组

来自分类Dev

$在mongodb中的多个字段上设置

来自分类Dev

在MongoDB中按多个字段分组

来自分类Dev

在MongoDb中的多个字段上分组

来自分类Dev

弹性搜索多个字段中的多个关键字

来自分类Dev

Lucene.NET-与AND在多个字段中搜索多个单词

来自分类Dev

弹性搜索多个字段中的多个关键字

来自分类Dev

SQLite查询多个字段中的值

来自分类Dev

如何使用搜索在Swift中搜索多个字段?

来自分类Dev

如何在URI搜索中搜索多个字段

来自分类Dev

Solr在Drupal 7中的多个字段中搜索

来自分类Dev

MongoDB-在多个字段中查找所有搜索字符串词

来自分类Dev

MongoDB-在多个字段中查找所有搜索字符串词

来自分类Dev

如何在Elasticsearch中搜索具有多个值的一个字段?

来自分类Dev

如何在Elasticsearch中搜索具有多个值的一个字段?

来自分类Dev

如何使用codeigniter活动记录在mysql表的单个字段中搜索多个值?

来自分类Dev

如何通过弹性搜索中的特定值查找具有多个字段的内部对象的对象

来自分类Dev

如何根据条件在多个字段中执行搜索

Related 相关文章

热门标签

归档