gpt4 book ai didi

arrays - MongoDB 查询 $in 与元素的正则表达式数组

转载 作者:行者123 更新时间:2023-12-02 03:41:28 26 4
gpt4 key购买 nike

好吧,我正在尝试实现一个查询,该查询正在尝试对一堆文档执行正则表达式搜索(其中包含数组列表)

这对我来说很难解释......所以我基本上是直截了当的。

有一个与正则表达式数组一起使用的查询...

db.paper.find({"category": {$in: [ /xd/, /sd/, /ad/ ] }})

有一个查询不适用于正则表达式数组...

db.paper.find({"category": {$in: [ "/xd/", "/sd/", "/ad/" ] }})

所以基本上我想要的是从字符串数组中删除“”符号...这样我就可以执行下面的查询..

var sea = [ "/xd/", "/sd/", "/ad/" ];
db.paper.find({"category": {$in: sea }});

最佳答案

使用 $in 对于小数组来说相当有效,但对于巨大的列表则不太有效,因为它会在索引中跳过以查找匹配的文档,或者如果没有可用的索引则遍历整个集合。 p>

此外using the $in with the regular expression ,您可以使用管道分隔的正则表达式模式和关键字列表,如下所示:

测试文档:

db.papertest.insert([
{ category: "ad bd cd" },
{ category: "dd ed fd" },
{ category: "gd hd id" },
{ category: "jd kd ld" },
{ category: "md nd od" },
{ category: "pd qd rd" },
{ category: "sd td ud" },
{ category: "vd wd xd yd zd" },
]);

魔法:

var keywords = ["xd", "sd", "ad"],
regex = keywords.join("|");

db.papertest.find({
"category": {
"$regex": regex,
"$options": "i"
}
});

结果

{ "_id" : ObjectId("56bb6f171bb4f693057c0ba4"), "category" : "ad bd cd" }
{ "_id" : ObjectId("56bb6f171bb4f693057c0baa"), "category" : "sd td ud" }
{ "_id" : ObjectId("56bb6f171bb4f693057c0bab"), "category" : "vd wd xd yd zd" }

关于arrays - MongoDB 查询 $in 与元素的正则表达式数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35321004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com