gpt4 book ai didi

MongoDB按正则表达式条件添加字段

转载 作者:行者123 更新时间:2023-12-04 14:22:52 24 4
gpt4 key购买 nike

考虑这个简单的集合:

{ 
"_id" : ObjectId("5b6fbcb328d62424ece9265b"),
"name" : "abc"
}
{
"_id" : ObjectId("5b6fbcbd28d62424ece9265c"),
"name" : "cde"
}

我想添加一个字段 hasA确定 name 中有任何“a”字符聚合查询中的字段,所以我的预期输出应该是这样的:
{ 
"_id" : ObjectId("5b6fbcb328d62424ece9265b"),
"name" : "abc",
"hasA" : true
}
{
"_id" : ObjectId("5b6fbcbd28d62424ece9265c"),
"name" : "cde",
"hasA" : false
}

我已经测试了这个聚合查询,但它返回错误的输出:
$addFields
{
"hasA": { $cond : [ {name : /a/}, true, false ] }
}

输出:
{ 
"_id" : ObjectId("5b6fbcb328d62424ece9265b"),
"name" : "abc",
"hasA" : true
}
{
"_id" : ObjectId("5b6fbcbd28d62424ece9265c"),
"name" : "cde",
"hasA" : true
}

我已经用这个查询测试了很多数据,但它似乎总是返回 true 作为结果。

最佳答案

您不能在聚合框架中使用正则表达式(JIRA 票证 here)。如果您只需要检查字符串是否包含子字符串,您可以使用 $indexOfBytes返回 -1 的运算符如果没有匹配:

db.col.aggregate([
{
$addFields: {
"hasA": { $cond : [ { $eq: [ { $indexOfBytes: [ "$name", "a" ] }, -1 ] }, false, true ] }
}
}
])

关于MongoDB按正则表达式条件添加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51806010/

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