Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 在Fantom中有没有更干净的方法来迭代Mongo查询结果?_Mongodb_Fantom - Fatal编程技术网

Mongodb 在Fantom中有没有更干净的方法来迭代Mongo查询结果?

Mongodb 在Fantom中有没有更干净的方法来迭代Mongo查询结果?,mongodb,fantom,Mongodb,Fantom,我正在编写一个web应用程序,并使用它访问Mongo DB实例。按照afMongo文档中的示例,我得到了需要迭代的查询结果。在一个简化的示例中,迭代如下所示 class MapListIterator { Void main(){ [Str:Obj?][] listOfMaps := [,] listOfMaps.add( ["12345":[ "id":12345, "c

我正在编写一个web应用程序,并使用它访问Mongo DB实例。按照afMongo文档中的示例,我得到了需要迭代的查询结果。在一个简化的示例中,迭代如下所示

    class MapListIterator {
      Void main(){
        [Str:Obj?][] listOfMaps := [,]
        listOfMaps.add(
          ["12345":[
             "id":12345,
             "code":"AU",
             "name":"Australia"
          ]])

        listOfMaps.each |Str:Obj? map| {
          echo(map.keys)
          keys := map.keys
          keys.each {
            echo(it)
            echo(((Str:Obj?)map[it])["code"])
            echo(((Str:Obj?)map[it])["name"])
          }
        }
      }
    }
我在中运行了这段代码,它工作正常,但我想知道这是否是一种更干净的方法来迭代结果。我不喜欢上面代码中的角色设置。还有,有没有更好的方法来编写嵌套的it块

编辑:

原来我把事情搞得太复杂了。下面是应用Steve的建议后代码的外观:

Str:Country mapOfCountries := [:]
mapOfCountries.ordered = true

listOfMaps := ([Str:Str?][]) collection.findAll
listOfMaps.each {
  c := it["code"]
  n := it["name"]
  mapOfCountries.add(c, Country { code = c ; name = n })
}

我会重播结果并尽早分配地图。。。其中:

listOfMappedMaps:=([Str:[Str:Obj?]]][])listofmap
每个映射的列表{
地图:=它
地图,钥匙,每个{
echo(映射[it][“代码”])
echo(映射[it][“名称”])
}
}

下一步是使用,它允许您使用对象代替地图。

谢谢。我想知道如何访问嵌套的“each”中的外部“it”。而且,早期的演员阵容也非常出色。我还得试试莫菲娅的方法。