gpt4 book ai didi

mongodb - 使用官方 mongo-go-driver 进行正确的通配符多字段查询

转载 作者:行者123 更新时间:2023-12-02 08:15:30 25 4
gpt4 key购买 nike

我有一个数据库字段:

            "sessionid": "C-dhf",
"given": "NURSE ",
"family": "SHARK",
"name": "SHARK, NURSE",

我正在尝试创建一个查询,该查询将查询数据库,查找家族以“s”开头、给定名称以“n”开头的记录。我正在使用以下内容来创建过滤器。

        {"sessionid", "C-dhf"},
{"$and", bson.A{
bson.D{{"family", primitive.Regex{Pattern: "^s", Options: "i"}}},
bson.D{{"given", primitive.Regex{Pattern: "^n", Options: "i"}}},
}},
}

查找中使用的过滤器值为:

[{sessionid C-dhf} {$and [[{family {"pattern": "^s", "options": "i"}}] [{given {"pattern": "^n", "options": "i"}}]]}]

发现的是:

cursor, err := collection.Find(context.TODO(), filter, findOptions)

它返回数据库中的所有记录,就好像它甚至没有查看过滤器一样。

多字段通配符查询的正确 go 语法是什么?

最佳答案

默认情况下,所有列出的条件都采用逻辑 AND 连接 ($and),因此您无需添加:

filter := bson.D{
{"sessionid", "C-dhf"},
{"family", primitive.Regex{Pattern: "^s", Options: "i"}},
{"given", primitive.Regex{Pattern: "^n", Options: "i"}},
}

如果您想要逻辑或连接,您使用的语法和结构将是合适的:如果您想要具有给定 session ID 的文档,并且其姓氏以 s 开头或给定名称开头与n。可能看起来像这样:

filter := bson.D{
{"sessionid", "C-dhf"},
{"$or", bson.A{
bson.D{{"family", primitive.Regex{Pattern: "^s", Options: "i"}}},
bson.D{{"given", primitive.Regex{Pattern: "^n", Options: "i"}}},
}},
}

关于mongodb - 使用官方 mongo-go-driver 进行正确的通配符多字段查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58359474/

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