gpt4 book ai didi

swift - 遍历从 MongoDB 获取的字符串数组

转载 作者:搜寻专家 更新时间:2023-10-31 08:30:49 24 4
gpt4 key购买 nike

我正在使用 MongoKitten从 mongoDB 中获取文档的库。

我的 mongoDB 中有以下文档:

{
...
foo: ["A", "B"]
...
}

我可以查询数据库,但无法循环遍历 foo返回文档的数组。例如,假设我将查询结果保存到 mongoDocs 中.

for Doc in mongoDocs {
print(Doc["foo"] as Any) // prints ["A", "B"]
var tempFoos = [String]()
for foo in Doc["foo"] { // gives error: Type 'Value' does not conform to protocol "Sequence"
print("Foo: " + foo)
tempFoos.append(foo)
}
}

我理解错误。基本上,我的 foo array 不符合允许我循环它的 Sequence 协议(protocol)。但我该如何解决呢?

编辑 - 这是我用来获取 mongoDocs 的代码.我已经打印了结果并使用了它们的其他属性。我似乎无法遍历此数组。

mongoDocs = try self.geographiesCollection!.find(matching: q, projecting: projection, limitedTo: 100)

这是 relevant function in the MongoKitten source code .该函数返回 Cursor<Document>

最佳答案

在这里您可以查看框架开发人员如何解释处理这种情况。 MongoKitten closed issue 27

以下是他的解释中的一些引用,以防链接失效。

“MongoKitten BSON 库在订阅文档时总是返回一个枚举(值)。”

“BSON 数组实际上只是一个包含从 0 到 x 的键的文档,因此数组的枚举案例有一个文档,因为它是关联值。因为值也可以是 double 或日期,所以它不会” t 符合 Sequence 协议(protocol)。

遍历数组的最简单方法是在 Value 上使用文档便捷访问器。如果 Value 是数组或文档,则返回基础文档,如果是其他内容,则返回空文档。然后你可以像这样迭代:“

for (key, val) in doc["vals"].document {
print("Value is \(val)")
}

关于swift - 遍历从 MongoDB 获取的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42263052/

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