【发布时间】:2021-10-07 18:04:01
【问题描述】:
我想从集合中返回值,一个是批次,应该与特定过滤器不同,即 value="Nice",另一个是供应商。我无法获取供应商值?
如何使用 Distinct 来实现,是否必须使用 Find()?
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
filter := bson.D{{Key: "batch", Value: ""}}
values, err := db.Collection("xyzcollection").Distinct(ctx, "batch", filter)
if err != nil {
return nil, err
}
batch := make([]string, len(values))
for i, v := range values {
batch[i] = v.(string)
}
fmt.Println(batch)
【问题讨论】:
-
db.collection.distinct返回不同字段值的 array。如果您想要集合中的其他字段,请使用db.collection.aggregate查询(使用$group阶段获取字段的不同值,然后您也可以包含其他字段)。 -
似乎可行,但无法编写代码。你能用代码解释你的想法吗?
-
这是 MongoDB 手册中的一个示例:$group - Retrieve Distinct Values。并且,请参阅此帖子:stackoverflow.com/questions/37129612/…