次のような他のコマンドは正しく機能します。
let commandDictionary = ["count": "trials"]
let error: NSError?
let result = myConnection.runCommandWithDictionary(
commandDictionary,
onDatabaseName: databaseName,
error: &error
)
ただし、コマンドを実行しようとしても、次のdistinct
ようにはなりません。
let commandDictionary = ["distinct": "trials", "key": "location"]
let error: NSError?
let result = myConnection.runCommandWithDictionary(
commandDictionary,
onDatabaseName: databaseName,
error: &error
)
これを実行した後の値error
は:Optional("MONGO_COMMAND_FAILED: The command returned with \'ok\' value of 0")
です。シェルで同じコマンドを実行すると(私は信じています)、正気の値が得られます。
db.runCommand({distinct: "trials", key: "location"})
更新 #1:
また、MongoConnection.serverVersion()
私に: を与え"2.6.3"
、 をMongoConnection.serverError()
返しますnil
。シェルでコマンドを実行すると、詳細なサーバー ログに次のように表示されます。
2014-12-12T10:11:54.556-0500 [conn69] command eim.$cmd command: distinct { distinct: "trials", key: "metadata.location" } keyUpdates:0 numYields:0 locks(micros) r:606 reslen:210 0ms
そして、ObjCMongoDb によって実行されるコマンドについて、次のように表示されます。
2014-12-12T10:10:25.945-0500 [conn171] command eim.$cmd command: isMaster { key: "metadata.location", distinct: "trials" } ntoreturn:1 keyUpdates:0 numYields:0 reslen:138 0ms
更新 #2:
どこかでdistinct
コマンドがコマンドにマップされているisMaster
ようです。これは他のコマンドでも発生します。たとえば、コマンド{listDatabases:1}
は にもマップさisMaster
れます。ただし、コマンド{buildInfo:1}
は に正しくマップされていbuildInfo
ます。