gpt4 book ai didi

database - 如何查找文档,哪个字段是特定字符串的子字符串?

转载 作者:搜寻专家 更新时间:2023-10-30 23:27:44 25 4
gpt4 key购买 nike

有没有办法在 MongoDB 集合中找到一个文档,哪个字段是我的“字符串”的子字符串?

只是一个小例子。假设我有这个集合:

{"str": "pho", ...},
{"str": "sma", ...},
{"str": "goa", ...},
{"str": "aba", ...},
{"str": "gag", ...}
...

例如,我的“字符串” 是“智能手机”。所以查询的结果应该是:

{"str": "pho", ...}
{"str": "sma", ...}

现在我使用这个正则表达式来解决我的问题:

^[smartphone]+$

这行得通,但它也会匹配像 {"str": "ophms", ...} 这样的文档,其中 "str"不是 "smartphone"的子字符串。

我知道,我的问题很像 #2123738 , 但那是关于 sql 数据库,其查询方法差异很大。

最佳答案

您可以使用$indexOfCP 来查找字符串是其他字符串的子字符串,如果是,它将返回起始索引,否则返回-1

{$expr : {$gte : [{$indexOfCP: ["smartphone","$str"]},0]}}

收藏

> db.t60.find()
{ "_id" : ObjectId("5c44c5cc9d56bf65be5ab2de"), "str" : "pho" }
{ "_id" : ObjectId("5c44c5cc9d56bf65be5ab2df"), "str" : "sma" }
{ "_id" : ObjectId("5c44c5cc9d56bf65be5ab2e0"), "str" : "goa" }
{ "_id" : ObjectId("5c44c5cc9d56bf65be5ab2e1"), "str" : "aba" }

结果

> db.t60.find({$expr : {$gte : [{$indexOfCP: ["smartphone","$str"]},0]}})
{ "_id" : ObjectId("5c44c5cc9d56bf65be5ab2de"), "str" : "pho" }
{ "_id" : ObjectId("5c44c5cc9d56bf65be5ab2df"), "str" : "sma" }

关于database - 如何查找文档,哪个字段是特定字符串的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54279248/

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