返回子文档字段值如%text%的文档

时间:2016-05-29 05:47:00

标签: arrays regex mongodb mongodb-query

我尝试使用$in在MongoDB中查找内容。基本上SQL中的内容是where name like '%text%'

我有以下结构

{ 
    name: "Roger", 
    address: [
        { 
            street: "Upper Main Street", 
            number: 107 
        }
    ], 
    age: 70
}

我试图找到街道上的记录,例如&#39;%main%&#39;和年龄<50

我尝试了以下内容:

db.collection.find(
    { $and: 
        [ street: { $in: [ /main/ ] } ], 
        [age: {$lt: 50}]
    }
   )

我没有设法让查询工作。我认为这是因为street在地址数组中,但我无法弄清楚如何在这个数组中查询。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您需要使用"dot notation"来解决“街道”字段。此外,您不需要使用文档中提到的$and逻辑运算符。

  

MongoDB在指定逗号分隔的表达式列表时提供隐式AND操作。当必须在多个表达式中指定相同的字段或运算符时,必须使用带有$和运算符的显式AND。

db.collection.find({ "address.street": /main/i, "age": { "$lt": 50  } })

您也不需要$in运算符。