mongodb中,如何使用正则模糊查询以逗号分割的标签?
有数据如下:
{"title":"我是标题","tag":"tag,tag1,tag2,tag3,tag7"}
{"title":"我是标题","tag":"tag5,tag6"}
{"title":"我是标题","tag":"tag7"}
可以看到,这里的标签是以英文逗号分割的字符串,mongoskin中,我这样查找
db.post.find({tags:new RegExp(‘tag’)}).toArray()
我的正则很明显写得不够。还需要判断如果某个标签的内容包含我查找的标签的情况。 想在 tag 前后逗号,但这个标签字符串可能只有一个
请大神帮忙写一下正则,可以精准匹配。
6 回复
var tag = "tag,tag1,tag2,tag3,tag7";
if ( tag.indexOf(",") != -1 ) {
tag.split(",")
}
不需要正则这么复杂吧!
在mongodb 里的数据。
//这不就是查询包含逗号的吗?
db.post.find({tags:/,/});
还有我看你文字写的逻辑不对,不知道你到底表达什么含义,只能根据你的标题给予以上的解释!
lz的意思是,查询 标签有“tag”的数据 如以下3个数据,只会返回第一条,而2,3条不应该返回。 {“title”:“我是标题”,“tag”:“tag,tag1,tag2,tag3,tag7”} {“title”:“我是标题”,“tag”:“tag5,tag6”} {“title”:“我是标题”,“tag”:“tag7”}
正则感觉能写出来 不过我不会写 呵呵 另外tag你可以存成其他数据格式,比如数组或则子文档,应该比较容易查询吧
将tag存成数组,使用$regex或者$in很容易查询