5.7.1 简单查询

5.7.1 简单查询

MongoDB使用find()进行文档的查询,然后以非结构化的方式显示返回的所有文档。如果需要结构化显示返回的文档,可以在find()返回的结果集上使用pretty()函数,如图5-12所示。

图5-12 find()函数返回文档示例——结构化方式和非结构化方式

注意:使用pretty()函数时,如果查询返回多个文档时,只对第一个文档以及与第一个文档结构相同的文档进行结构化显示。

find()函数返回的结果是一个游标对象,放入游标对象中的数据无论是单条还是多条结果集,每次只能提取一条数据。一般用于遍历数据集合,通过hasNext()函数判断是否还有下一条数据,next()函数则用于获取下一条数据,如图5-13所示。

图5-13 使用游标访问find()返回的结果

在图5-10的例子中,使用for循环插入了10个文档,这10个文档具有字段“x”和“j”,没有“name”字段,如果查询其name字段时会显示unknown type。为了用游标对象显示每个文档的“name”字段,使用db.user.remove({“x”:4})语句,将这些没有“name”字段的文档删除。同时,为了展示游标用于遍历集合的功能,再使用insert命令插入一个有“name”字段的文档,如图5-13所示。

由于Mongo Shell是JavaScript的客户端,可以利用JS的特性,用forEach输出游标对象中的数据,如图5-14所示。需要注意的是,forEach()函数必须定义一个函数供每个数据元素调用,图5-14中的printjson就是一个JavaScript预定义的系统函数。

图5-14 使用forEach访问游标对象