Mongodb用和查询

时间:2014-11-11 01:32:22

标签: regex mongodb mongodb-query

我在mongo数据库中有我的数据,我的集合有两个字段,created_attext,我想提取一个包含bank,{{1}等单词的文档}和{em>文本字段中的chile,并将 created_at 值设为fin。我是mongodb的新手,当我尝试使用以下查询时,它会将错误提供为" 意外令牌"

查询:

jan 15.

请建议我更正。谢谢提前

1 个答案:

答案 0 :(得分:1)

这是错误的。部分是在$and中多余使用不需要的地方,其次我认为你的第二个条件是$or。实际上,这意味着在最简单的意义上使用正则表达式:

db.tweet.find({
    "created_at": /.*jan 15.*/i,
    "text": /bank|chile|fin/i
})

实际上,使用“单词边界”来获得更精确的“单词”匹配:

db.tweet.find({
    "created_at": /.*jan 15.*/i,
    "text": /\bbank\b|\bchile\b|\bfin\b/i
})

如果你确实意味着“和”意味着“文本”字段必须包含这些字符串的“全部”,那么你需要一个$and运算符。但与你的表现不同:

db.tweet.find({
    "created_at": /.*jan 15.*/i,
    "$and": [
        { "text": /.*bank.*/i },
        { "text": /.*chile.*/i },
        { "text": /.*fin.*/i }
    ]
}

$and的目的是允许“数组”构造,其中为不同的条件引用“相同”字段名称。结果是有效的,“关键名称”不重复。

否则所有 MongoDB参数总是隐式地为“和”参数。