美文网首页mongoDB
mongo的聚合语句在某些server和shell版本不匹配时会

mongo的聚合语句在某些server和shell版本不匹配时会

作者: 五大RobertWu伍洋 | 来源:发表于2017-07-07 10:56 被阅读171次

    1. 查看当前服务器的mongo版本信息

    2001 $ dpkg -l|grep mongo

    ii  mongodb                                  1:2.4.9-1ubuntu2                                    amd64        object/document-oriented database (metapackage)

    ii  mongodb-clients                          1:2.4.9-1ubuntu2                                    amd64        object/document-oriented database (client apps)

    ii  mongodb-dev                              1:2.4.9-1ubuntu2                                    amd64        object/document-oriented database (development)

    ii  mongodb-server                            1:2.4.9-1ubuntu2                                    amd64        object/document-oriented database (server package)

    2. 本地连接mongo服务器,mongo shell运行聚合语句结果报错

    > db.imp_20170503.aggregate([{$group : {_id : "$idfa", total : {$sum : 1}}}])

    2017-07-07T10:47:11.952+0800 E QUERY    [thread1] TypeError: cmd.cursor is undefined :

    DBCollection.prototype.aggregate@src/mongo/shell/collection.js:1322:1

    @(shell):1:1

    3. 在远程mongo服务器上,直接mongo shell运行:

    > db.imp_20170503.aggregate([{$group : {_id : "$idfa", total : {$sum : 1}}}])

    { "result" : [ { "_id" : "idfa", "total" : 11 } ], "ok" : 1 }

    4. 发现被坑爹了! 远程服务器上可以 : MongoDB shell version: 2.4.9

    本地shell不行 :

    MongoDB shell version v3.4.2

    connecting to: mongodb://127.0.0.1:27017

    MongoDB server version: 2.4.9

    WARNING: shell and server versions do not match

    5. 上述显示的"connecting to: mongodb://127.0.0.1:27017"是因为ssh做的端口转发到本地了。

    6. 上述实践证明,不是mongo版本低导致的。是server和mongo shell版本不匹配导致聚合执行出错!

    7. 奇葩的是,我在本地连接另一个版本的mongo服务器3.2.14(在yunip上),版本也是不匹配的,但是执行完好:

    mongo --port 37017

    MongoDB shell version v3.4.2

    connecting to: mongodb://127.0.0.1:37017/

    MongoDB server version: 3.2.14

    WARNING: shell and server versions do not match

    > db.imp_20170503.aggregate([{$group : {_id : "$idfa", total : {$sum : 1}}}])

    { "_id" : "idfa", "total" : 11 }

    -------------------------------------------------------------------------------------

    yunip服务器上的信息如下,也将端口转发到本地37017了。

    2001 $ dpkg -l|grep mongo

    ii  mongodb-org                              3.2.14                                              amd64        MongoDB open source document-oriented database system (metapackage)

    ii  mongodb-org-mongos                        3.2.14                                              amd64        MongoDB sharded cluster query router

    ii  mongodb-org-server                        3.2.14                                              amd64        MongoDB database server

    ii  mongodb-org-shell                        3.2.14                                              amd64        MongoDB shell client

    ii  mongodb-org-tools                        3.2.14                                              amd64        MongoDB tools

    rc  mongodb-server                            1:2.4.9-1ubuntu2                                    amd64        object/document-oriented database (server package)

    -------------------------------------------------------------------------------------

    8. 真不能简单说是mongo server和shell版本不匹配导致的,但至少有关系。只是生产中的mongo服务器要测试聚合语句,只能在那台服务器上测试了!

    相关文章

      网友评论

        本文标题:mongo的聚合语句在某些server和shell版本不匹配时会

        本文链接:https://www.haomeiwen.com/subject/hsslhxtx.html