如何在 go 中编写这些 mongo 代码

我的 mongo 文件在这里


 db.aaa.aggregate([{

                $match : {

                    status : "Active"

                }

            }, {

                $project : {

                    _id : 1,

                    title : 1,

                    postdatetime : 1,

                    status : 1,

                    answer : {

                        $filter : {

                            input : "$answer",

                            as : "answe",

                            cond : {

                                $eq : ["$$answe.status", "Active"]

                            }

                        }

                    }

                }

            }

        ])

我试试这个写进去


o2 := bson.M{

    "$project":bson.M{

        "$answer":bson.M{

                "_id":1,"title":1,"postdatetime":1,"status":1,"answer":bson.M{

                            "$filter":bson.M{"input":"$answer","as":"ans","cond":bson.M{"$eq":bson.M["$$ans.status","Active",],},}

                        },


            },

        },

}

但它在 err语法错误中显示了这一点 :意外逗号,期待]


请帮帮我。


After the answer i try this one

   o2: = bson.M {

    "$project": bson.M {

        "$answer": bson.M {

            "_id": 1,

            "title": 1,

            "revision": 1,

            "bgimageurl": 1,

            "author": 1,

            "postdatetime": 1,

            "status": 1,

            "qatags": 1,

            "followers": 1,

            "qaviews": 1,

            "answer": bson.M {

                "$filter": bson.M {

                    "input": "$answer",

                    "as": "ans",

                    "cond": bson.M {

                        "$eq": "[$$ans.status][,Active]",

                    },

                },

            },


        },

    },

}

这次编译成功,但是在运行 go 文件后,请向我发送这个 err msg 2016/05/11 11:04:17 $expressions are not allowed at the top-level of $project exit status 1


慕神8447489
浏览 147回答 2
2回答

小怪兽爱吃肉

您的代码中有两个错误:1.bson.M中的数组bson.M["$$ans.status","Active",]会给你错误Type bson.M is not an expression,因为在这种情况下你不需要键值对,字符串数组将是一个更好的情况。尝试:[]string{"$$ans.status","Active",}2.逗号根据https://golang.org/doc/effective_go.html:词法分析器总是在标记后插入一个分号。这可以概括为“如果换行符出现在可以结束语句的标记之后,则插入分号”。如果您没有在 之后附加逗号},则词法分析器将为;您插入一个,这将导致您当前的问题。"$filter":bson.M{"input":"$answer","as":"ans","cond":bson.M{"$eq":bson.M{"$$ans.status","Active",},},}&nbsp;//&nbsp;should&nbsp;add&nbsp;a&nbsp;comma&nbsp;at&nbsp;the&nbsp;end&nbsp;of&nbsp;the&nbsp;line修改后:"$filter":bson.M{"input":"$answer","as":"ans","cond":bson.M{"$eq":[]string{"$$ans.status","Active",},},},更新对于您的第二个问题,$expressions are not allowed at the top-level of $project请注意聚合mongodb只接受array,您可以参考此链接https://docs.mongodb.com/v3.0/reference/operator/aggregation/:db.collection.aggregate(&nbsp;[&nbsp;{&nbsp;<stage>&nbsp;},&nbsp;...&nbsp;]&nbsp;)

梦里花落0921

做完这一切之后o2 := bson.M{&nbsp; &nbsp; &nbsp; &nbsp; "$project":bson.M{"_id":1,"title":1,"postdatetime":1,"status":1"answer":bson.M{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "$filter":bson.M{"input":"$answer","as":"ans","cond":bson.M{"$eq":[]string{"$$ans.status","Active",},},},},},}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go