即使字段值比文档中的字段值更具体,MongoDB也会匹配文档

时间:2016-06-20 10:18:41

标签: regex mongodb mongodb-query nosql

我有这个基本的Mongo文件:

{version: "v1.5"}

我遇到的问题是,当我使用:db.coll.find({version: "/v1.5/i"})时,它会返回文档,但是如果我指定了超过1.5这样的db.coll.find({version: "/v1.5.1/i"}),则它不会返回文档。< / p>

在MySQL中,我可以这样做:SELECT * IN versions WHERE CONCAT('%', field, '%') = "1.5.1"

如果版本比文档更具体,我如何让它返回文档。

1 个答案:

答案 0 :(得分:0)

您可以使用可选参数regex,放置:

v1\.5(\.\d)??

这意味着在app端你需要检查给定版本字段中存在多少个点,并决定

  1. 在第二个点(包括点)之后截断所有内容
  2. 在上面添加正则表达式,将额外数据视为optional group
  3. 顺便说一下 - 请在你的正则表达式中转义点,因为它可以匹配版本v125v1a5