如何在mongodb中的数组中查找文本搜索

时间:2016-10-12 11:02:41

标签: mongodb mongodb-query

 {
    "_id":objectId(23651478),
    "name":"Tomatos"
    "array":[
             {"title":"Vegetables"}
            ]
    "description":"Vegitables are good to health"
 },
 {
    "_id":objectId(45761244),
    "name":"Apples"
    "array":[
             {"title":"Fruits"}
            ]
    "description":"Fruits are good to health, vegitables are also good to health"
 },
 {
    "_id":objectId(45761244),
    "name":"Apples"
    "array":[
             {"title":"Vegetables-home-made"}
            ]
    "description":"Fruits are good to health, vegitables are also good to health"
 }

以上是我的项目要求的mongo架构模式。当我只想搜寻蔬菜时,蔬菜名称应该来。如果我同时寻找蔬菜和水果,那么两个名字,即番茄和苹果都应该来。

我像这样使用"$in"运算符

{"array":{$in:[{"title":"Vegetables"},{"title":"Fruits"}]}}

它仅提供标题为Vegetables而非Vegetables-Home-made的文档。为此,我尝试使用$elemMatch

 {"array":{$elemMatch:[{"title":"Vegetables"},{"title":"Fruits"}]}}

但是当我们在elemMatch中搜索多个ie。,VegetablesFruits时,它会给出一个错误,我想在数组中搜索特定的标题键,即。,

{"array":{$text:{:$search:[{"title":"Vegetables"},{"title":"Fruits"}]}}}

2 个答案:

答案 0 :(得分:2)

这是你想要的:

您可以在$ in运算符中使用正则表达式,如下所示:

{array: { $elemMatch: { title: { $in: [/Vegetables/, /Fruits/] }}}}

答案 1 :(得分:0)

MongoDB中的常规文本搜索如下:

db.collectionName.find( { $text: { $search: "Vegetables" } } )

请检查您运行的搜索文字蔬菜包含拼写错误:

{"array":{$text:{:$search:[{"title":"Vegitables"},{"title":"Fruits"}]}}}