【发布时间】:2020-06-08 11:17:04
【问题描述】:
在 mongodb 文档中,我们有一个具有如下值的键:
a/b
a/b/c
b/c/d
如果两条路径相等或一条路径包含另一条路径,则两条路径相同。例如:
a/b, a/b - 相同
a/b, a/b/c - 与第一个相同包含其他
a/b, a/c - 不同。即使父母相同,他们也有不同的孩子路径
a/b, a/bc - 不同
a/b, /a/b/ - 相同
现在,在插入新文档时,我必须检查该路径是否唯一。我必须动态生成正则表达式来检查。是否可以使用正则表达式来做到这一点?
假设a/b/c 已经存储在数据库中。新文档包含a/b,我可以编写类似^/{0,10}a/{1,10}b/{0,10} 的正则表达式。但是如果db包含a/b并且新文档包含a/b/c/d,如何为a/b/c/d编写正则表达式使其匹配a/b
【问题讨论】:
-
“a/b”和“a/b/c”不违反约束吗?
-
两者都相同,因为 a/b 包含路径 a/b/c。问题是我在
a/b文件夹中写的任何内容都可以覆盖 a/b/c -
包含还是前缀/后缀? b/c 和 a/b/c/d 呢?包含在树结构或字符串的意义上?
-
这是一个前缀。 b/c 和 a/b/c/d 无效。想象一个文件夹结构 /a 和文件夹 a/b。在第一种情况下有一个文件夹 a 。在第二种情况下,文件夹 a 中有一个文件夹 b。这就是我所说的“包含”。很抱歉造成混乱。
标签: regex mongodb mongodb-query regex-lookarounds