• node查询mongo


    http://www.cnblogs.com/whoamme/p/3467374.html

    nosql的数据库的查询:可以分为查询所有,查询一个,条件查询,和表的关联查询。(这个另外在写一个独立的mongo吧)

    看这个api:http://api.mongodb.com/

    http://mongodb.github.io/node-mongodb-native/2.0/api/

    Post.prototype.save = function(callback) {
      var date = new Date();
      //存储各种时间格式,方便以后扩展
      var time = {
          date: date,
          year : date.getFullYear(),
          month : date.getFullYear() + "-" + (date.getMonth() + 1),
          day : date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate(),
          minute : date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " + 
          date.getHours() + ":" + (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes())
      }
      //要存入数据库的文档
      var post = {
          name: this.name,
          head: this.head,
          time: time,
          title:this.title,
          tags: this.tags,
          post: this.post,
          comments: [],
          reprint_info: {},
          pv: 0
      };
      //打开数据库
      mongodb.open(function (err, db) {
        if (err) {
          return callback(err);
        }
        //读取 posts 集合
        db.collection('posts', function (err, collection) {
          if (err) {
            mongodb.close();
            return callback(err);
          }
          //将文档插入 posts 集合
          collection.insert(post, {
            safe: true
          }, function (err) {
            mongodb.close();
            if (err) {
              return callback(err);//失败!返回 err
            }
            callback(null);//返回 err 为 null
          });
        });
      });
    };
    

      简化的形式出现:

    Post.prototype.save = function(callback) {
      //要存入数据库的文档
      var post = {
          name: this.name,
          head: this.head,
          time: this.time,
          title:this.title,
          tags: this.tags,
          post: this.post,
          comments: [],
          reprint_info: {},
          pv: 0
      };
      //打开数据库
      mongodb.open(function (err, db) {
        if (err) {
          return callback(err);
        }
        //读取 posts 集合
        db.collection('posts', function (err, collection) {
          if (err) {
            mongodb.close();
            return callback(err);
          }
          //将文档插入 posts 集合
          collection.insert(post, {
            safe: true
          }, function (err) {
            mongodb.close();
            if (err) {
              return callback(err);//失败!返回 err
            }
            callback(null);//返回 err 为 null
          });
        });
      });
    };
    

      

    //打开数据库
      mongodb.open(function (err, db) {
        if (err) {
          return callback(err);
        }
        //读取 posts 集合
        db.collection('posts', function (err, collection) {
          if (err) {
            mongodb.close();
            return callback(err);
          }
          //将文档插入 posts 集合
          collection.insert(post, {
            safe: true
          }, function (err) {
            mongodb.close();
            if (err) {
              return callback(err);//失败!返回 err
            }
            callback(null);//返回 err 为 null
          });
        });
      });
    

      调用db.coolection方法

     //打开数据库
      mongodb.open(function (err, db) {
        if (err) {
          return callback(err);
        }
        //读取 posts 集合
        db.collection('posts', function (err, collection) {
          if (err) {
            mongodb.close();
            return callback(err);
          }
         
        });
      });
    

    利用上面的db.collection()函数返回对象

     //将文档插入 posts 集合
          collection.insert(post, {
            safe: true
          }, function (err) {
            mongodb.close();
            if (err) {
              return callback(err);//失败!返回 err
            }
            callback(null);//返回 err 为 null
          });
    

      

    //一次获取十篇文章  count方法
     

      

    var query = {};
    if (name) {
      query.name = name;
    }
    //使用 count 返回特定查询的文档数 total
    collection.count(query, function (err, total) {
      //根据 query 对象查询,并跳过前 (page-1)*10 个结果,返回之后的 10 个结果
      collection.find(query, {
        skip: (page - 1)*10,
        limit: 10
      }).sort({
        time: -1
      }).toArray(function (err, docs) {
        mongodb.close();
        if (err) {
          return callback(err);
        }
        //解析 markdown 为 html
        docs.forEach(function (doc) {
          doc.post = markdown.toHTML(doc.post);
        });  
        callback(null, docs, total);
      });
    });

     distinct

    //distinct 用来找出给定键的所有不同值
          collection.distinct("tags", function (err, docs) {
            mongodb.close();
            if (err) {
              return callback(err);
            }
            callback(null, docs);
          });
    

      

    //返回含有特定标签的所有文章
    Post.getTag = function(tag, callback) {
      mongodb.open(function (err, db) {
        if (err) {
          return callback(err);
        }
        db.collection('posts', function (err, collection) {
          if (err) {
            mongodb.close();
            return callback(err);
          }
          //查询所有 tags 数组内包含 tag 的文档
          //并返回只含有 name、time、title 组成的数组
          collection.find({
            "tags": tag
          }, {
            "name": 1,
            "time": 1,
            "title": 1
          }).sort({
            time: -1
          }).toArray(function (err, docs) {
            mongodb.close();
            if (err) {
              return callback(err);
            }
            callback(null, docs);
          });
        });
      });
    };
    

      

    //返回通过标题关键字查询的所有文章信息
    Post.search = function(keyword, callback) {
      mongodb.open(function (err, db) {
        if (err) {
          return callback(err);
        }
        db.collection('posts', function (err, collection) {
          if (err) {
            mongodb.close();
            return callback(err);
          }
          var pattern = new RegExp(keyword, "i");
          collection.find({
            "title": pattern
          }, {
            "name": 1,
            "time": 1,
            "title": 1
          }).sort({
            time: -1
          }).toArray(function (err, docs) {
            mongodb.close();
            if (err) {
             return callback(err);
            }
            callback(null, docs);
          });
        });
      });
    };
    

      

  • 相关阅读:
    蓝桥杯国赛--四阶幻方清晰易懂(dfs+剪枝,stl)
    蓝桥杯---九宫重排(典型bfs)
    快速排序算法细致总结!!!
    Topsis优劣解距离分析法
    golang变量的定义
    golang
    erlang的优缺点
    mongrel代码注解
    取石块 解题报告
    军队 解题报告
  • 原文地址:https://www.cnblogs.com/coding4/p/5597931.html
Copyright © 2020-2023  润新知