Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 带and的Mongo db查询_Regex_Mongodb_Mongodb Query - Fatal编程技术网

Regex 带and的Mongo db查询

Regex 带and的Mongo db查询,regex,mongodb,mongodb-query,Regex,Mongodb,Mongodb Query,我在mongo数据库中有我的数据,我的收藏有两个字段,即created_at,text,我想提取一个文档,在文本字段中有bank,chile和fin,并在jan 15>创建了值的_。。我是mongodb新手,当我尝试使用下面的查询时,它将错误作为“意外令牌” 查询: db.tweet.find({$and : [{"created_at" : /.*jan 15.*/i}, {"text : /.*bank.*/i, /.*chile.*/i, /.*fin.*/i "}]}) 请建议我更正。

我在mongo数据库中有我的数据,我的收藏有两个字段,即
created_at
text
,我想提取一个文档,在文本字段中有
bank
chile
fin
,并在
jan 15>创建了值的_。
。我是mongodb新手,当我尝试使用下面的查询时,它将错误作为“意外令牌”

查询:

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

请建议我更正。请提前感谢

这是写错的。部分原因是在不需要的地方重复使用,其次我想你是指第二个条件。这实际上转化为最简单的使用正则表达式形式:

db.tweet.find({
“创建于”:/*1月15日。*/i,
“正文”:/bank |智利| fin/i
})
实际上,使用“单词边界”进行更精确的“单词”匹配:

db.tweet.find({
“创建于”:/*1月15日。*/i,
“文本”:/\bbank\b | \b儿童\b | \b儿童\b儿童/i
})
如果您实际上是指“and”,这意味着“text”字段必须包含这些字符串的“all”,那么您需要一个运算符。但与你的做法不同:

db.tweet.find({
“创建于”:/*1月15日。*/i,
“$and”:[
{“文本”:/*银行。*/i},
{“文本”:/*智利。*/i},
{“text”:/*fin.*/i}
]
}
的目的是允许一个“数组”构造,其中在不同的条件下引用“相同”字段名。这是为了使结构有效,并且“键名”不重复


否则,所有MongoDB参数始终隐式地是一个“and”参数。

谢谢您的建议,我希望文本字段中有一个and运算符,但当我使用第三个(最后一个)查询时,它不会给我任何信息,除了“…”您需要这样的文本字段才能匹配:
“智利有一家银行由fin本地人托管”
。除非这是您想要的,否则最后一张表格不是您想要的,您的意思是“或”。