mongodb中,如何使用正则模糊查询以逗号分割的标签?
发布于 11 年前 作者 willerce 6377 次浏览 最后一次编辑是 8 年前

有数据如下:

{"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很容易查询

回到顶部