gpt4 book ai didi

mongodb - 如何在MongoDb中使用$ arrayElemAt

转载 作者:行者123 更新时间:2023-12-01 22:16:55 25 4
gpt4 key购买 nike

我有以下管道,我想在Golang中使用它并将其转换为bson.M。一种方法是使用bson.UnmarshalExtJSON,但我想知道什么与此管道的bson.M完全等效。实际上我的问题在$ arrayElemAt行中。

            "$lookup": {
"from" : "cities",
"localField": "cityId",
"foreignField": "_id",
"as" : "city"
}}
, {
"$project": {
"_id": 0,
"name": 1,
"age": 1,
"city": { "$arrayElemAt" : ["$city.name", 0]}
}}

我用这个bson.M:
   stage1 := bson.M{
"$lookup": bson.M{
"from": "cities",
"localField": "cityId",
"foreignField": "_id",
"as" : "city",
},
}

stage2 := bson.M{
"$project": bson.M{
"_id": 0,
"name": 1,
"age": 1,
"city": bson.M{ "$arrayElemAt" : bson.M{"$city.name", 0} },
},
}

pipeline := make([]bson.M, 0)

pipeline = append(pipeline, stage1)
pipeline = append(pipeline, stage2)

上面的代码给了我编译器错误:在我拥有“city”的行上缺少 map 文字的键:bson.M {“$ arrayElemAt”:bson.M {“$ city.name”,0}}。那么将$ arrayElemAt定义为bson.M的正确方法是什么?

最佳答案

正确的翻译方式

"city": { "$arrayElemAt" : ["$city.name", 0]}

将会:
bson.M{"$arrayElemAt":[]interface{}{"$city.name",0}

因为这个原因,您得到了编译错误:
bson.M{"$city.name", 0} 
bson.M是一个映射,因此正确的语法应使用 :而不是 ,

关于mongodb - 如何在MongoDb中使用$ arrayElemAt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59241067/

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