搜索列表的所有值包含在mongodb和mongodb java中的字符串类型的字段中

时间:2015-10-15 07:40:38

标签: regex mongodb mongodb-query mongodb-java

我在mongodb集合中有数据,其中包含以下格式的字段ID和语音。

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

我必须代表两个关键字获取数据,例如'Always be'和'boy'作为条件,而不是。

如果条件为'和',则搜索结果为关键字'Always be','boy'结果为 -

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

如果条件为'或',则搜索关键字为'Always be','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"}})

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

1 个答案:

答案 0 :(得分:0)

以下是'或','和'以及'不'顺序查询。

用于或 -

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

For和 -

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

不是 -

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