美文网首页
第七章 使用MongoDB shell执行其他数据查找操作

第七章 使用MongoDB shell执行其他数据查找操作

作者: 蚂蚁闲游 | 来源:发表于2017-10-11 12:43 被阅读0次

MongoDB 高级集合数据查找

题纲:

  • 确定与查找操作匹配的文档数;
  • 以特定的顺序返回文档;
  • 限制返回的文档数;
  • 大型数据集分页;
  • 减少返回的文档包含的字段;
  • 查找数据集中特定字段的不同值;

计算文档数:

count() 可以实现,如下:

cursor = db.wordscoll.finc({first:{$in:['a','b','c']}});
itemCount = cursor.count();

练习

对结果进行排序:

Cursor对象的方法sort()让您能够指定要根据哪些字段对游标中的文档进行排序,并按相应的顺序返回文档。方法sort()将一个对象作为参数,这个对象字段名用作属性名, 并使用值1(升序)-1(降序)来指定排序顺序。如:

 myCollection.find().sort({name:1}).sort({value:-1});

对同一个游标,可以多次使用sort(),从而依次按不周的字段进行排序。如上述代码的例子。

限制结果集:

  • 只接受一定数量的文档;
  • 限制返回的字段;
  • 对结果分页,批量的获取它们;

只接受一定数量的文档 : 可以采用limit() 来指定返回文档的数量;
注: myCollection.find().limit(0);,表示不限制

限制返回的字段

实现此功能, 是需要启用find()操作作的的projection参数。参数是一个文档, 属性值为0/false表示不包含, 1/true 表示包含。如:
返回first字段为t的文档时, 要排除字段status、value和comments,可使用下面的projection参数:

 find({first:"t"},{status:false,value:false,comments:false});

再如:只想返回word,size 二个字段:

find({first:"t"},{word:1,size:1})

结果集分页

采用limit()、skip()进行处理;
如:

cursor = mycol.find().sort({name:1});
cursor.limit(10);
cursor.skip(0);
cursor = mycol.find().sort({name:1});
cursor.limit(10);
cursor.skip(10);
cursor = mycol.find().sort({name:1});
cursor.limit(10);
cursor.skip(20);

以上skip(),方法相当于pagenumber 对应的是几页, 但这里不是指页码,而是对应页数的第n-1条记录。

查找不同的字段

Collection对象的方法distinct()方法能让指定字段的不同值列表,这种方法的语法如下:
distinct(key, [query]);
说明:
参数key 是一个字符串,指定了要获取哪个字段的不同值, 要获取子文档中字段的不同值,可使用句点语法,如status.count。
参数query 是一个包含标准查询选项目的对象,指定了要从哪些文档中获取不同的字段值。
例如:有一个包含字段first、last和age的用户文档,要获取年龄超过65岁的用户的不同姓名, 可使用如下操作,这里面需要排除重复的姓名, 显示所有不同的姓名, 所以这里采用了distinct这个关键字作为方法名

lastnames = myUsers.distinct('last',{age:{$gt:65}});

方法distinct()返回,指定条件下, 指定字段不重复的记录集合。

lastnames = myUsers.distinct('last',{age:{$gt:70}});
















相关文章

网友评论

      本文标题:第七章 使用MongoDB shell执行其他数据查找操作

      本文链接:https://www.haomeiwen.com/subject/hmauyxtx.html