mogoose_mongodb_entity

来源:互联网 发布:热云数据 编辑:程序博客网 时间:2024/04/19 19:15

先贴源代码,让我们一步一步分析。

 var mongoose = require("mongoose");

var db = mongoose.connect("mongodb://127.0.0.1:27017/test");

 var TestSchema = new mongoose.Schema({

        name : { type:String },

        age  : { type:Number, default:0 },

        email: { type:String },

        time : { type:Date, default:Date.now }

    });

    var TestModel = db.model("test1", TestSchema );

    var Etity=new TestModel({

        name:"zhangsan",

        age:25,

        email:"1319135082@qq.com"

    });//通过 Model创建模型

    Etity.save(function(error,doc){

        console.log(doc);

    });//通过Etity.save存入mongodb数据库

   我们引用的mongoose模块,要想了解mongoose,我们首先了解一下mongodb,他和mysql一样都是一个开源的数据库,但他们区别在,前者是一个非关系性数据库,后者是一个关系性数据库。相比MySql那样的数据库,他更显得轻巧、灵活,非常适合在数据规模很大、事务性不强的场合下使用。同时它也是一个对象数据库,没有表、行等概念,也没有固定的模式和结构,所有的数据以文档的形式存储(文档,就是一个关联数组式的对象,它的内部由属性组成,一个属性对应的值可能是一个数、字符串、日期、数组,甚至是一个嵌套的文档。),数据格式就是JSON。

知道了MongoDB,我们就可以来看一下Mongoose了,Mongoose其实是MongoDB的一个对象模型的工具,是基于node-mongodb-native开发的MongoDB nodejs驱动,大家都知道,只要是个数据库,你要想用别的语言去操作它,就必须有对应的驱动,node-mongodb-native就是这个意思。并且可以在异步的环境下执行。同时它也封装了MongoDB的操作,也就是说里面封装了一些方法,可以直接对MongoDB数据库进行增删查改。从而才能让Nodejs操作数据库更简单啥,不然你用MongoDB的原生语法去操作,还要自己去封装这些语法。所以Mongoose就是为了方便。

现在,我们来说上面的代码,首先先要引用模块,这就相当于java,C#里面的导包,因为这种模块没有封装成原型,所以直接调用connect方法,方法的参数是一个字符串,字符串是一个url地址,填写数据库的连接地址以及库名。再利用mongoose的schema方法建立字段。那接着我们就来说说schema这个用途。Schema--一种以文件形式存储的数据库模型骨架,无法直接通往数据库端,也就是说它不具备对数据库的操作能力,仅仅只是数据库模型在程序片段中的一种表现,可以说是数据属性模型,直白的说就是一个表结构。接着呢,我们就用mongoose中的model,这个model呢也要说一下,也蛮重要。它是由Schema构造生成的模型,除了Schema定义的数据库骨架以外,还具有操作数据库的行为。通过这个创建了,就可以操作数据库了。这个model方法需要两个参数,就像上面的,第一个是集合的名称,其实这才是mysql中的表名的意思,第二个参数就是你的Schema的表结构名称。下一步就是通过这个数据集model创建一个实体(参数是一个json对象,key值需要对应Schema)形成一个Entity,接着就可以去用Entity的save方法去保存数据。

TestModel.find({age:{$gt:18}},function(error,doc){

   console.log(doc);

    });//查询年龄小于18的

    TestModel.find({age:{$lt:60}},function(error,doc){

   console.log(doc);

    })//查询年龄大于60的

    TestModel.find({age:{$gt:18,"$lt":60}},function(error,doc){

   console.log(doc);

    });//查询年龄大于18小于60的

    TestModel.find({age:{$ne:24}},function(error,doc){

   console.log(doc);

    });//查询age不等于24的所有数据

    TestModel.find({age:{$ne:'tom'},age:{$gte:18}},function(error,doc){

   console.log(doc);

    });//查询name不等于tom、age>=18的所有数据

    TestModel.find({age:{$in:[20,30]}},function(error,doc){

   console.log(doc);

    });//查询age等于20,30的所有数据

    TestModel.find({age:{$in:[24,25,27]}},function(error,doc){

  console.log(doc);

    });

    TestModel.find({$or:[{name:"yaya"},{age:28}]},function(error,doc){

   console.log(doc);

    });//查询name为yaya或age为28的全部文档

    TestModel.find({name:{$exists:true}},function(error,doc){

   console.log(doc);

    });//查询所有存在name属性的文档

    TestModel.find({telephone:{$exists:false}},function(error,doc){

   console.log(doc);

    });//查询所有不存在telephone属性的文档

这是一些查询的语句,还有update方法和delete的方法,自己可以搜索一下,原理就是这样

1 0
原创粉丝点击