mongoDB

  1. mongoose

入门

首先要确保你已经MongoDB的Node.js的安装。

mongoose官网http://www.nodeclass.com/api/mongoose.html#quick_start

具体用法查文档

接下来使用npm以下命令从命令行安装Mongoose 

$ npm install mongoose

现在说我们喜欢模糊的小猫,并且想要记录我们在MongoDB中见过的每一只小猫。我们需要做的第一件事是在我们的项目中包含猫鼬,并test在我们本地运行的MongoDB实例上打开与数据库的连接

// getting-started.js
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');

我们有一个到本地主机上运行的测试数据库的挂起连接。如果我们成功连接或发生连接错误,我们现在需要得到通知:

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) {
  // yay!
});

一旦我们的连接打开,我们的回调将被调用。为简洁起见,我们假设所有以下代码都在此回调中。

使用Mongoose,所有内容都来自Schema让我们参考它并定义我们的小猫。

var kittySchema = mongoose.Schema({
    name: String
})

到现在为止还挺好。我们有一个有一个属性的模式name,这将是一个 String下一步是将我们的模式编译成模型

var Kitten = mongoose.model('Kitten', kittySchema)

模型是我们构建文档的类。在这种情况下,每个文档将成为一个小猫,其特性和行为在我们的模式中声明。让我们创建一个小猫文档,代表我们在外面人行道上遇到的小家伙:

var silence = new Kitten({ name: 'Silence' })
console.log(silence.name) // 'Silence'

小猫可以喵喵叫,那么让我们来看看如何在我们的文档中添加“speak”功能:

// NOTE: methods must be added to the schema before compiling it with mongoose.model()
kittySchema.methods.speak = function () {
  var greeting = this.name
    ? "Meow name is " + this.name
    : "I don't have a name"
  console.log(greeting);
}
var Kitten = mongoose.model('Kitten', kittySchema)

添加到methods模式属性的函数会被编译到Model原型中并显示在每个文档实例上:

var fluffy = new Kitten({ name: 'fluffy' });
fluffy.speak() // "Meow name is fluffy"

我们有说话的小猫!但是我们仍然没有保存任何东西给MongoDB。通过调用其保存方法可以将每个文档保存到数据库中回调的第一个参数将是一个错误,如果有任何发生。

fluffy.save(function (err, fluffy) {
  if (err) return console.error(err);
  fluffy.speak();
});

说时间过去了,我们想要展示我们见过的所有小猫。我们可以通过我们的小猫模型访问所有的小猫文档

Kitten.find(function (err, kittens) {
  if (err) return console.error(err);
  console.log(kittens)
})

我们只是将所有的小猫都记录在我们的数据库中。如果我们想按名称过滤我们的小猫,Mongoose支持MongoDB丰富的查询语法。

Kitten.find({ name: /^Fluff/ }, callback)
》》2.MongoDb服务器连接mongoose的用法

var mongoose = require("mongoose");

//第一步: mongoose来连接上mongodb的服务器

//创建连接 nodejs-mongodb
//mongodb://localhost:27017/test test:数据库名称
const dbUrl = "mongodb://localhost:27017/test";

//建立连接
mongoose.connect(dbUrl);

//监听是否连接成功 connected
mongoose.connection.on("connected",(socket)=>{
console.log(`${dbUrl} 连接成功了!`)
})


//第二步:操作mongodb/test->collections
//mongodb test goods
//step1:需要在nodejs下创建一个和goods集合对应的一个数据结构 schema
// mongodb goods集合
// nodejs goods同样的一结构 _id,title,des,price
// nodejs goodsschema <- mongoose -> goods 绑定
// 绑定model->CURD->SYSN database
//创建一个schma,用来创建js与mongodb中的collectons的对应schema
var Schema = mongoose.Schema;

//通过schema来创建一个集合在程序中的代理
//userSchema-> users
var userSchema = new Schema({
name:{type:String},
age:{type:Number},
sex:{type:String}
})

//绑定userSchema与数据库中的collection users
var userModel = mongoose.model("users",userSchema);


//第三步,操作userModel->mongoose
//CURD
//1.添加一个新的文档 document
function SaveUser() {
var user = new userModel({
name:"lisi",
age:20,
sex:"male"
});
//save来保存数据`
user.save((error,result)=>{
console.log(result)
})
}

//2.删除用户信息:根据条件来删除
function deleteUser() {
userModel.remove({"name":"lisi"}).exec((error,result)=>{
console.log(result)
})
}

//修改用户信息
function updateUser() {
userModel.update({"name":"zhangsan"},{$set:{"age":30}}).exec((error,result)=>{
console.log(result)
})
}

//查询用户
function getUsers() {
userModel.find({"name":"xxx"}).exec((error,results)=>{
console.log(results)
})
}

//查询分页: skip limit
// skip: 跳过多少行记录
// limit: 限制显示的行数 skip(pageindex*pagesize).limit(pagesize)
function getPager(pageIndex,pageSize) {
userModel.find({}).skip(pageIndex*pageSize).limit(pageSize).exec((error,result)=>{
console.log(result)
})
}


getPager(4,1);

 

3.MongoDB具体简单用法

详情看http://www.runoob.com/mongodb/mongodb-tutorial.html

 



 

posted @ 2018-04-20 01:10  辉辉632  阅读(229)  评论(0编辑  收藏  举报