我尝试使用$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在地址数组中,但我无法弄清楚如何在这个数组中查询。
有什么想法吗?
答案 0 :(得分:3)
您需要使用"dot notation"来解决“街道”字段。此外,您不需要使用文档中提到的$and
逻辑运算符。
MongoDB在指定逗号分隔的表达式列表时提供隐式AND操作。当必须在多个表达式中指定相同的字段或运算符时,必须使用带有$和运算符的显式AND。
db.collection.find({ "address.street": /main/i, "age": { "$lt": 50 } })
您也不需要$in
运算符。