我在mongo数据库中有我的数据,我的集合有两个字段,created_at
,text
,我想提取一个包含bank
,{{1}等单词的文档}和{em>文本字段中的chile
,并将 created_at 值设为fin
。我是mongodb的新手,当我尝试使用以下查询时,它会将错误提供为" 意外令牌"
查询:
jan 15.
请建议我更正。谢谢提前
答案 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参数总是隐式地为“和”参数。