gpt4 book ai didi

ios - 通过 ObjCMongoDB 运行基于 MongoDB 字典的命令

转载 作者:行者123 更新时间:2023-11-28 09:16:20 25 4
gpt4 key购买 nike

其他命令对我来说工作正常,例如:

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")。在 shell 中运行(我相信)相同的命令给了我理智的值(value)观:

db.runCommand({distinct: "trials", key: "location"})

更新#1:

此外,MongoConnection.serverVersion() 给我:"2.6.3"MongoConnection.serverError() 返回 。在 shell 中运行命令时,详细的服务器日志显示:

2014-12-12T10:11:54.556-0500 [conn69] command eim.$cmd command: distinct { distinct: "trials", key: "metadata.location"} keyUpdates:0 numYields:0 锁(微)r:606 reslen:210 0ms

他们为 ObjCMongoDb 运行的命令显示了这一点:

2014-12-12T10:10:25.945-0500 [conn171] 命令 eim.$cmd 命令:isMaster { key: "metadata.location", distinct: "trials"} ntoreturn:1 keyUpdates:0 numYields :0 reslen:138 0ms

更新#2:

distinct 命令似乎在某处被映射到 isMaster 命令。其他命令会发生这种情况。例如,命令 {listDatabases:1} 也映射到 isMaster。但是,命令 {buildInfo:1} 已正确映射到 buildInfo

最佳答案

如本 issue report 中所讨论,问题是数据库要求键是有序的,但是 Swift 和 Objective-C 一样,不保留字典键的顺序。

作为库的作者,我建议的解决方法是使用库中包含的 OrderedDictionary 构造命令。

更新:

在库的 0.12.0 版本中,-runCommandWithDictionary 已弃用。这是新方法的代码:

let error: NSError?
let result = myConnection.runCommandWithName(
"distinct",
value: "trials",
arguments: ["key": "location"],
onDatabaseName: databaseName,
error: &error
)

关于ios - 通过 ObjCMongoDB 运行基于 MongoDB 字典的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27445189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com