【问题标题】:Iterate through result of find operation in Mongokitten遍历 Mongokitten 中 find 操作的结果
【发布时间】:2018-06-11 12:12:06
【问题描述】:

我在 MongoDB 上查询元素并收到 2 个元素。 但我无法遍历 CollectionSlice。 有什么想法吗?

代码如下:

let elements = database.getAllElements()
do {
    try print("Received: \(elements.count()) elements")
    } catch {
      print(error)
    }
for element in elements {
   print(element)  // ==> should print out the element
}
let documents: [Document] = Array(elements)
for document in documents {
   print(document) // ==> should print out the document
}

输出: 收到:2 个元素

// ==> 没有元素或文档的打印输出

程序以退出代码结束:0

感谢您的帮助

【问题讨论】:

    标签: swift4 mongokitten


    【解决方案1】:

    我找到了一个可能的解决方案:
    我必须重置光标,例如:

    do {
      try elements.reset()
    } catch {
      print(error)
    }
    

    但是为什么我必须首先重置光标? 希望有人能回答。

    【讨论】:

      【解决方案2】:

      MongoDB 中的游标是查询的结果流。一旦耗尽,就没有更多的文档了,这意味着在游标上重新迭代等于继续迭代。由于光标已耗尽,因此没有更多结果。

      重置游标有效地再次发送查询并流式传输这些结果。 遍历游标两次是不好的做法,最好只处理一次游标,因为这将对应用程序和数据库产生重大的性能影响。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-16
        • 2021-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-30
        • 1970-01-01
        相关资源
        最近更新 更多