【问题标题】:search all values of list contains in a field of type string in mongodb and in mongodb java搜索列表的所有值包含在 mongodb 和 mongodb java 中的字符串类型字段中
【发布时间】:2015-10-15 07:40:38
【问题描述】:

我在 mongodb 集合中有名为 Speech 的数据,其字段 id 和 Speech 格式如下。

{ "speechtext" : "Always be a good boy" },
{ "speechtext" : "Always be a simply guy"  },
{ "speechtext" : "Always be a cute boy" },
{ "speechtext" : "I am a girl." }

我必须代表两个关键字(例如“永远是”和“男孩”)获取数据,用于条件和,或,不。

如果条件为“and”,则使用关键字“Always be”进行搜索,“boy”的结果将是 -

{ "speechtext" : "Always be a good boy" },
{ "speechtext" : "Always be a cute boy" }

如果条件为“或”,则使用关键字“永远是”进行搜索,“男孩”的结果将是 -

{ "speechtext" : "Always be a good boy" },
{ "speechtext" : "Always be a simply guy" },
{ "speechtext" : "Always be a cute boy"  }

如果条件为“not”,则使用关键字“Always be”进行搜索,“boy”的结果将是 -

{  "speechtext" : "I am a girl." }

我已经有如下“或”条件的解决方案。

db.getCollection('speech').find({"speechtext" : { "$regex" : "Always be|boy"}})

我想查询'and'而不是'条件。

【问题讨论】:

  • 请不要混淆样本数据中的_id值,而只是删除不相关的数据,这也应该准备好“复制粘贴”以使其可用和可测试来源。另请注意,您的格式设置错误。缩进文本用于代码,并让您的“文本”段落不缩进。在离开帖子之前,还要始终检查您的格式是否清晰易读。最后,如果确实是regex 问题,则将其标记为这样。

标签: regex mongodb mongodb-query mongodb-java


【解决方案1】:

这里是“或”、“与”和“非”的顺序查询。

对于或-

db.getCollection('speech').find({"speechtext" : { "$regex" : "Always be|boy"}})

对于和-

db.getCollection('speech').find({$and:[{"speechtext":{$in:[/'Always be/]}},{"speechtext":{$in:[/boy/]}}]})

为了不-

db.getCollection('speech').find({$or:[{"speechtext":{$nin:[/Always be/]}},{"speechtext":{$nin:[/boy/]}}]})

【讨论】:

    猜你喜欢
    • 2021-04-25
    • 1970-01-01
    • 2021-02-10
    • 2013-04-26
    • 1970-01-01
    • 2022-09-22
    • 2019-05-06
    • 1970-01-01
    • 2019-02-11
    相关资源
    最近更新 更多