1. 查看當(dāng)前服務(wù)器的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服務(wù)器,mongo shell運(yùn)行聚合語(yǔ)句結(jié)果報(bào)錯(cuò)
> 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. 在遠(yuǎn)程mongo服務(wù)器上,直接mongo shell運(yùn)行:
> db.imp_20170503.aggregate([{$group : {_id : "$idfa", total : {$sum : 1}}}])
{ "result" : [ { "_id" : "idfa", "total" : 11 } ], "ok" : 1 }
4. 發(fā)現(xiàn)被坑爹了! 遠(yuǎn)程服務(wù)器上可以 : 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"是因?yàn)閟sh做的端口轉(zhuǎn)發(fā)到本地了。
6. 上述實(shí)踐證明,不是mongo版本低導(dǎo)致的。是server和mongo shell版本不匹配導(dǎo)致聚合執(zhí)行出錯(cuò)!
7. 奇葩的是,我在本地連接另一個(gè)版本的mongo服務(wù)器3.2.14(在yunip上),版本也是不匹配的,但是執(zhí)行完好:
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服務(wù)器上的信息如下,也將端口轉(zhuǎn)發(fā)到本地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. 真不能簡(jiǎn)單說(shuō)是mongo server和shell版本不匹配導(dǎo)致的,但至少有關(guān)系。只是生產(chǎn)中的mongo服務(wù)器要測(cè)試聚合語(yǔ)句,只能在那臺(tái)服務(wù)器上測(cè)試了!