我的文档如下所示。
{
"sId": "s1",
"source": "September Challenge %2s",
},
{
"sId": "s2",
"source": "September 2019 Challenge %2s"
},
{
"sId": "s3",
"source": "September Challenge 2019"
}
我试图用正则表达式2
在source
中搜索文档。我正在拿到所有的3份文件。我想要下面的结果。
{
"sId": "s2",
"source": "September 2019 Challenge %2s"
},
{
"sId": "s3",
"source": "September Challenge 2019"
}
第一个文档应该被忽略,因为它有%2s
,第二个和第三个文档应该出现,因为它包含2019
。有人能指导我如何实现上述目标吗。
尝试下面的正则表达式。
db.getCollection('somecollection').find({field: {$regex: '(?<!%)<word>(?!=s)'}})
从您的注释中,您似乎希望在source
字段中找到具有2019
的文档,即使它包含%2
。您可以使用更具体的正则表达式来完成此操作。
db.collection.find({ source: { $regex: "2019" } })