zoukankan      html  css  js  c++  java
  • mongoose学习笔记3--简单查询1

    简述

    查询就是返回一个集合中的文档的子集

    Mongoose 模型提供了

      find、  

      findOne、

      findById

    三种方法用于文档查询。

    为了方便后面课程的有效学习,我们先添加一些测试数据。

    TestModel.create([
    { name:"test1", age:20 },
    { name:"test2", age:30 },
    { name:"test3", age:24 },
    { name:"test4", age:18 },
    { name:"test5", age:60 },
    { name:"test6", age:50, email:"t6@qq.com" },
    { name:"test7", age:40, email:"t7@163.com" },
    { name:"test8", age:27 },
    { name:"test9", age:27, email:"t9@yeah.net" },
    { name:"test10",age:65 }
    ], function(error,docs) {
        if(error) {
            console.log(error);
        } else {
            console.log('save ok');
        }
    });
    

      注:以上数据仅供后面测试,可以自行修改属性值,但是必须符合我们之前所定义集合属性,否则出错就...

    find 过滤查询

    前面我们学习了find的基本使用方法,相信你已经对它完全掌握了,今天呢将对find方法进行更深一步的学习,了解和掌握它的过滤功能,怎么个过滤法呢,请看如下介绍。

    1.属性过滤 find(Conditions,field,callback);

    field省略或为Null,则返回所有属性。

    //返回只包含一个键值name、age的所有记录
    TestModel.find({},{name:1, age:1, _id:0},function(err,docs){
    //docs 查询结果集
    })
    

      注:我们只需要把显示的属性设置为大于零的数都可以,当然1是最好理解的,_id是默认返回,如果不要显示加上("_id":0),但是,对其他不需要显示的属性且不是_id,如果设置为0的话将会抛异常或查询无果。

    findOne的基本用法

    与find相同,但只返回单个文档,也就说当查询到即一个符合条件的数据时,将停止继续查询,并返回查询结果。

    1.单条数据 findOne(Conditions,callback);

    TestModel.findOne({ age: 27}, function (err, doc){
    // 查询符合age等于27的第一条数据
    // doc是查询结果
    });
    

      

    findOne方法,只返回第一个符合条件的文档数据。

    findById的基本用法

    与findOne相同,但它只接收文档的_id作为参数,返回单个文档。

    1.单条数据 findById(_id, callback);

    TestModel.findById('obj._id', function (err, doc){
    //doc 查询结果文档
    });
    

      注:同样是单条数据,findById和findOne还是有些区别的。

    本次小结

    我们讲述了针对数据的几个查询方法,根据不同条件选择相应的查询方法。

    总结:

          1. find过滤查询 :find查询时我们可以过滤返回结果所显示的属性个数。

      2. findOne查询 :只返回符合条件的首条文档数据。

      3. findById查询:根据文档_id来查询文档。

  • 相关阅读:
    HDU 4725 The Shortest Path in Nya Graph(优先队列+dijkstra)
    POJ 3216 Repairing Company(二分图匹配)
    POJ 3414 Pots(bfs打印路径)
    POJ 3278 Catch That Cow(bfs)
    poj 3009 curling2.0 (dfs)
    用“道”的思想解决费用流问题---取/不取皆是取 (有下界->有上界) / ACdreamoj 1171
    hdu2448 / 费用流 / harbin赛区c题
    大数类模板(+-*/%等等)
    hdu4619 / 最大独立集
    hdu4888 多校B 最大流以及最大流唯一判断+输出方案
  • 原文地址:https://www.cnblogs.com/xuange306/p/4604499.html
Copyright © 2011-2022 走看看