文档章节

mongoose文档

cyper
 cyper
发布于 2015/12/01 00:53
字数 365
阅读 88
收藏 0
点赞 0
评论 0

详见:http://mongoosejs.com/docs/guide.html

Schema 》Model 》Instance

安装
node install mongoose --save

简单的例子:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
//mongoose.connect('mongodb://localhost/test');
mongoose.connect('localhost', 'test');

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

    // schema
    var kittySchema = new Schema({
        name: String
    });
    kittySchema.methods.speak = function () {
        var greeting = this.name ? 'My name is ' + this.name : "I don't have a name";
        console.log(greeting);
    };

    // model
    // 记住第一个参数+s就是表/collection的名字。
    var Kitten = mongoose.model('Kitten', kittySchema);

    // instance/property
    var xx = new Kitten({name: 'xxx'});
    console.log(xx.name);

    // call method
    var yy = new Kitten({name: 'yy'});
    yy.speak();

    // save
    yy.save(function (err, yy) {
        if (err) {
            console.log(err);
            return;
        }

        console.log(yy);
    });

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

        console.log(kittens);
    });

    // find by (name starts with 'y')
    Kitten.find({name: /^y/}, function (err, kittens) {
        if (err) {
            console.log(err);
            return;
        }

        console.log(kittens);
    });

});

自己写得稍微复杂一点的例子:

var mongoose = require('mongoose');
var PlatformTask = require('./PlatformTask');
var Receiver = require('./Receiver');
var Message = require('./Message');
var BlueConfig = require('./BlueConfig');
var _ = require('lodash');


mongoose.connect('mongodb://localhost/bluelotus');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.on('open', function () {
    console.log('yay!');


    PlatformTask.findOne({"taskStatus": "开放招募中"}, function (err, task) {
        var requiredSkills = task.get('taskSkills');


        // status = active, order by vip level desc.
        var messages = [];
        Receiver.find({active: true})
            .sort('-vip.freelevel')
            .exec(function (err, users) {
                if (err) return console.log(err);

                console.log('required skills:', requiredSkills);

                _.each(users, function (user) {
                    var skills = user.get('skill');
                    var skillNames = _.pluck(skills, 'name');
                    console.log("user skills:", skillNames);

                    var common = _.intersection(requiredSkills, skillNames);
                    console.log(common);

                    // match skills
                    if (common.length > 0) {
                        messages.push({
                            user_phone: user.telephone.length > 0 ? users.telephone[0]: '',
                            content: _.template("亲爱的<%=user%>, 去看看新任务吧:任务名称:<%=task%> ")({
                                user: user.get('nickname'),
                                task: task.get('taskName')
                            })
                        });
                    }

                    // max users number
                    if(messages.length === BlueConfig.max_users){
                        return false;
                    }
                });

                console.log('messages: ', messages);


                // insert messages
                Message.create(messages, function(err){
                    if(err) return console.log('save message error');

                    console.log("messages saved");
                });


            });
    });


});




我只能说mongodb太好用了。。。数据库和表不用事先存在。 只管用就行。



© 著作权归作者所有

共有 人打赏支持
cyper

cyper

粉丝 58
博文 618
码字总数 143161
作品 0
武汉
前端工程师
mongoose 查询操作的高级应用

对于mongoose操作集合的方便之处确实不一般,但主要还是你在引用中对集合的设计,不过mongoose在使用ref关联集合的时候有限制和查出的集合的组合问题有点麻烦。不过不要紧,简单易用就行。 ...

造化玉碟 ⋅ 2014/07/15 ⋅ 0

Mongoose - 让NodeJS更容易操作Mongodb数据

Mongoose是什么 Mongoose是什么 Mongoose是MongoDB的一个对象模型工具,可以工作于异步环境下。 定义一个模型很容易: var Comments = new Schema({ title : String , body : String , date ...

maweitao ⋅ 2014/04/11 ⋅ 0

Mongoose,nodejs和mongodb的连接器。

简介 今天我们将学习Mongoose,什么是Mongoose呢,它于MongoDB又是什么关系呢,它可以用来做什么呢,介绍Mongoose之前,我们先简单了解一下MongoDB。 MongoDB是一个开源的NoSQL数据库,相比M...

笔阁 ⋅ 2015/10/13 ⋅ 0

Nodejs和Mongodb的连接器Mongoose

简介 今天我们将学习Mongoose,什么是Mongoose呢,它于MongoDB又是什么关系呢,它可以用来做什么呢,介绍Mongoose之前,我们先简单了解一下MongoDB。 MongoDB是一个开源的NoSQL数据库,相比M...

笔阁 ⋅ 2015/10/13 ⋅ 0

Mongoose 4.4.17 发布,MongoDB 连接包

Mongoose 4.4.17 发布了,以下是本次发布值得关注的内容: docs: remove repetition in QueryStream docs #4147 hugoabonizio fix(document): dont double-validate doc array elements #414......

oschina ⋅ 2016/05/14 ⋅ 0

Node.js开发入门——MongoDB与Mongoose

为了保存网站的用户数据和业务数据,通常需要一个数据库。MongoDB和Node.js特别般配,因为MongoDB是基于文档的非关系型数据库,文档是按BSON(JSON的轻量化二进制格式)存储的,增删改查等管...

foruok ⋅ 2015/08/18 ⋅ 0

MongooseJS 3.8.31 发布,MongonDB 连接包

MongooseJS 3.8.31 发布,此版本是 bug 修复版本,能充分处理 discriminators 和 $meta 相关的文本搜索问题 #2166 下载:https://github.com/Automattic/mongoose/archive/3.8.31.zip。 Mong...

oschina ⋅ 2015/06/21 ⋅ 0

nodejs mongoose建模实践

一直以来mongoose学习都是比较麻烦的,mongoose-cli试图简化学习和测试mongoose部分,并通过app开发流程反思整个过程中业务逻辑部分如何抽象,以期简化开发与分层实现 app开发流程 如图 这里...

i5ting ⋅ 2015/08/07 ⋅ 0

MongooseJS 3.8.35 发布,MongonDB 连接包

MongooseJS 3.8.35 发布,此版本主要是 bug 修复: fixed; handling for minimize on nested objects #2930 fixed; don't crash when schema.path.options undefined #1824 下载:https://g......

oschina ⋅ 2015/08/15 ⋅ 0

MongooseJS 4.1.12 发布,MongonDB 连接包

MongooseJS 4.1.12 发布,此版本更新内容如下: docs; use readPreference instead of slaveOk for Query.setOptions docs #3471 buunguyen fixed; more helpful error when regexp contains......

oschina ⋅ 2015/10/20 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CENTOS7防火墙命令记录

安装Firewall命令: yum install firewalld firewalld-config Firewall开启常见端口命令: firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-po......

cavion ⋅ 今天 ⋅ 0

【C++】【STL】利用chromo来测量程序运行时间与日志时间打印精确到微秒

直接上代码吧,没啥好说的。头疼。 #include <iostream>#include <string>#include <ctime>#include <sstream>#include <iomanip>#include <thread>#include <chrono>using ......

muqiusangyang ⋅ 今天 ⋅ 0

Mac环境下svn的使用

在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境。在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还需做一下简...

故久呵呵 ⋅ 今天 ⋅ 0

破解公司回应苹果“USB限制模式”:已攻破

本周四,苹果发表声明称 iOS 中加入了一项名为“USB 限制模式”的功能,可以防止 iPhone 在连接其他设备的时候被破解,并且强调这一功能并不是针对 FBI 等执法部门,为的是保护用户数据安全。...

六库科技 ⋅ 今天 ⋅ 0

MyBtais整合Spring Boot整合,TypeHandler对枚举类(enum)处理

概要 问题描述 我想用枚举类来表示用户当前状态,枚举类由 code 和 msg 组成,但我只想把 code 保存到数据库,查询处理,能知道用户当前状态,这应该怎么做呢?在 Spring 整合MyBatis 的时候...

Wenyi_Feng ⋅ 今天 ⋅ 0

synchronized与Lock的区别

# <center>王梦龙的读书笔记第一篇</center> ## <center>-synchronized与Lock的区别</centre> ###一、从使用场景来说 + synchronized 是能够注释代码块、类、方法但是它的加锁是和解锁使用一......

我不想加班 ⋅ 今天 ⋅ 0

VConsole的使用

手机端控制台打印输出,方便bug的排查。 首先需要引入vconsole.min.js 文件,然后在文件中创造实例。就能直接使用了。 var vConsole = new VConsole(); vConsole的文件地址...

大美琴 ⋅ 今天 ⋅ 0

Java NIO之字符集

1 字符集和编解码的概念 首先,解释一下什么是字符集。顾名思义,就是字符的集合。它的初衷是把现实世界的符号映射为计算机可以理解的字节。比如我创造一个字符集,叫做sex字符集,就包含两个...

士别三日 ⋅ 今天 ⋅ 0

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 今天 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部