9.3处理数据集

获取数据项的操作返回数据集,而不是修改数据并返回结果集的操作。可以使用数据项从数据库中读取collection.find()table.select()session.sql()。所有三种方法都返回封装数据项的数据集。collection.find()返回带文档的数据集table.select()分别session.sql()返回带有行的数据集。

所有数据集都实现了迭代其数据项的统一方式。统一的语法支持一个逐个获取项目fetchone()或使用所有项目的列表使用fetchall()fetchone()fetchall()遵循仅前瞻性迭代语义。实现X Devapi的连接器可以在顶部提供更多高级迭代模式,以匹配常见的母语模式。

以下示例显示了如何访问由a返回的文件collection.find()通过使用操作fetchone()循环所有文档。

第一次打电话fetchone()返回找到的第一个文档。所有后续调用按一个位置递增内部数据项迭代器光标,并返回找到第二个呼叫的项目fetchone()如果有的话,返回找到的第二个文档。当读取最后一个数据项时fetchone()再次调用null值返回。这可确保基本循环显示,如果语言支持这样的实现,则所有语言都适用于实现X devapi。

当使用fetchone()不能将内部数据项游标重置为第一个数据项以再次开始读取数据项。一种数据项(这里是Document),它使用一次就被获取fetchone()可以通过连接器丢弃。数据项的终生时间与数据集分离。从连接器透视项,呼叫者被获取时消耗。此示例假定存在测试模式。

var mycoll = db.getcollection('my_collection');var res = mycoll.find('姓名:name')。绑定('name','l%')。执行();var doc;while(doc = res.fetchone()){print(doc);}

以下示例显示了如何直接访问返回的行table.select()手术。结果迭代的基本代码模式是相同的。以下与前一个示例之间的差异在于数据项处理。这里,fetchone()返回行。访问行的列值的确切语法是依赖于语言。实现寻求提供一种语言本机访问模式。这个例子假定了测试模式存在,其中存在员工表mytable.

var myrows = mytable.select([''name','年龄'])。其中('名称(如:name')。绑定('name','l%')。执行();var行;虽然(Row = myrows.fetchone()){//按阵列打印访问字段('name:'+行['name'] +'\ n');//按动态属性打印访问字段('年龄:'+ Row.age +'\ n');}