在另一个数组中搜索字符串,如mongodb中的字符串

在另一个数组中搜索字符串,如mongodb中的字符串,mongodb,mongodb-query,Mongodb,Mongodb Query,我想在mongodb中进行查询,以便在另一个字符串中搜索字符串。 现在,用例是我有如下文档: { "names":"[John,Mike,Stephen,Rock]" } 现在我想制作一个过滤器,用于搜索: 案例1:约翰是否以他的名字出现 案例2:如果John和Mike都在这条线上 我对mongodb很陌生。我浏览了很多帖子,但到目前为止还没有得到任何令人满意的结果。有些正在使用正则表达式或文本搜索。是否有人可以帮助进行查询使用$in运算符匹配MongoDb中数组中的值: 假设集合清单

我想在mongodb中进行查询,以便在另一个字符串中搜索字符串。 现在,用例是我有如下文档:

{
    "names":"[John,Mike,Stephen,Rock]"
}
现在我想制作一个过滤器,用于搜索:

  • 案例1:约翰是否以他的名字出现
  • 案例2:如果John和Mike都在这条线上

  • 我对mongodb很陌生。我浏览了很多帖子,但到目前为止还没有得到任何令人满意的结果。有些正在使用正则表达式或文本搜索。是否有人可以帮助进行查询

    使用$in运算符匹配MongoDb中数组中的值:

    假设集合清单包含包含字段标记的文档,如下所示:

    { _id: 1, item: "abc", qty: 10, tags: [ "school", "clothing" ]}
    
    然后,下面的find()操作将获取tags字段,该字段包含至少一个元素与“appliances”或“school”匹配的数组

    对于您的用例1:

    db.users.find({names : "John"});
    
    对于您的用例2:

    db.users.find({ names: { 
           $in: ["John", "Mike"]
     } });
    

    您可以尝试以下使用正则表达式模式的查询:

    案例1:检查
    名称
    字符串字段包含一个单词
    John

    db.collection.find({ names: /John/})
    
    案例2:检查
    名称
    字符串字段同时包含
    John
    Mike
    单词

    db.collection.find({ names: {$all : [/John/, /Mike/]}})
    
    我建议在
    名称
    字段上建立索引,如果可能,尝试使用


    Ref:

    但这里不是数组,而是字符串,在这种情况下使用in进行搜索也会起作用吗?哇,我们如何检查相反的情况,即John不在姓名中?你也能帮忙吗@Anshul:您需要使用
    $nin
    而不是
    $all
    。类似这样的
    db.collection.find({names:{$nin:[/John/]}})
    。好的,很好,非常感谢您的帮助!!:)
    db.collection.find({ names: {$all : [/John/, /Mike/]}})