2013-10-09 11 views
5

Như tiêu đề gợi ý, tôi muốn lấy phiên bản của cá thể mongo mà máy khách đang kết nối đến. Hiện tại tôi đang sử dụng trình điều khiển java mongo 2.9.3 và cá thể mongo là 2.2.2.Lấy phiên bản của Mongo Instance bằng trình điều khiển Java

Tôi yêu cầu điều này, để hỗ trợ cả hai $pushAll$push với các chức năng $each, vì chức năng cũ không còn được dùng nữa so với phiên bản 2.4. Nói tóm lại tôi muốn biết tài xế Java tương đương với db.version()

Trả lời

5

Một poking chút xung quanh tiết lộ này:

> db.version() 
2.4.6 
> db.version 
function(){ 
    return this.serverBuildInfo().version; 
} 
> db.serverBuildInfo 
function(){ 
    return this._adminCommand("buildinfo"); 
} 
> db.runCommand('buildinfo') 
{ 
    "version" : "2.4.6", 
    "gitVersion" : "b9925db5eac369d77a3a5f5d98a145eaaacd9673", 
    "sysInfo" : "Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49", 
    "loaderFlags" : "-fPIC -pthread -rdynamic", 
    "compilerFlags" : "-Wnon-virtual-dtor -Woverloaded-virtual -fPIC -fno-strict-aliasing -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -Werror -pipe -fno-builtin-memcmp -O3", 
    "allocator" : "tcmalloc", 
    "versionArray" : [ 
     2, 
     4, 
     6, 
     0 
    ], 
    "javascriptEngine" : "V8", 
    "bits" : 64, 
    "debug" : false, 
    "maxBsonObjectSize" : 16777216, 
    "ok" : 1 
} 

Vì vậy, bạn chỉ có thể sử dụng tương đương với runCommand trong mã java của bạn (không biết lái xe java, tôi 'anh chàng ruby'.

+0

Clever, không nghĩ về điều đó – fgakk

6

Cho đến khi phiên bản tương lai của trình điều khiển trình bày một phương pháp, giải pháp hiện tại đang theo dõi, nhờ gợi ý từ here.

DB db = new Mongo("127.0.0.1").getDB("test");//Better use MongoClient since Mongo class is deprecated 
System.out.println(db.getMongo().getVersion());//prints 2.9.3 driverversion 
CommandResult commandResult = db.command("buildInfo"); 
System.out.println(commandResult.getString("version"));//prints 2.4.2 Note tried at home since my mongo version is 2.4.2 
1

một này làm việc cho tôi (Java client 3.5.0):

MongoClient client = //.. 
String version = client.getDatabase("dbname") 
    .runCommand(new BsonDocument("buildinfo", new BsonString(""))) 
    .get("version") 
    .toString(); 
Các vấn đề liên quan