mongoose集合操作

mongodb

修改数据

update({id:"107"},{ $set: {"user_id" : '50001'} })

Schema

一种以文件形式存储的数据库模型骨架,无法直接通往数据库端,也就是说它不具备对数据库的操作能力.可以说是数据属性模型(传统意义的表结构),又或着是“集合”的模型骨架

/* 定义一个 Schema */
var mongoose = require("mongoose");
var TestSchema = new mongoose.Schema({
name : { type:String },//属性name,类型为String
age : { type:Number, default:0 },//属性age,类型为Number,默认为0
time : { type:Date, default:Date.now },
email: { type:String,default:''}
});

上面这个 TestSchema包含4个属性 [name, age, time, email]

Model

由Schema构造生成的模型,除了Schema定义的数据库骨架以外,还具有数据库操作的行为,类似于管理数据库属性、行为的类

var db = mongoose.connect("mongodb://127.0.0.1:27017/test");
// 创建Model
var TestModel = db.model("test1", TestSchema);

test1 数据库中的集合名称, 不存在会创建.

ObjectId

存储在mongodb集合中的每个文档(document)都有一个默认的主键_id,这个主键名称是固定的,它可以是MongoDB支持的任何类型,默认是ObjectId.
ObjectId是一个12字节的 BSON 类型字符串。按照字节顺序,依次代表:
4字节:UNIX时间戳
3字节:表示运行MongoDB的机器
2字节:表示生成此_id的进程
3字节:由一个随机数开始的计数器生成的值

Mongose 逻辑操作符

$or    或关系
$nor    或关系取反
$gt    大于
$gte    大于等于
$lt     小于
$lte    小于等于
$ne 不等于
$in 在多个值范围内
$nin 不在多个值范围内
$all 匹配数组中多个值
$regex  正则,用于模糊查询
$size   匹配数组大小
$maxDistance  范围查询,距离(基于LBS)
$mod   取模运算
$near   邻域查询,查询附近的位置(基于LBS)
$exists   字段是否存在
$elemMatch  匹配内数组内的元素
$within  范围查询(基于LBS)
$box    范围查询,矩形范围(基于LBS)
$center 范围醒询,圆形范围(基于LBS)
$centerSphere  范围查询,球形范围(基于LBS)
$slice    查询字段集合中的元素(比如从第几个之后,第N到第M个元素)

集合操作方法

-1.构造函数, 其实就是model的实例
new TestModel( { name:‘xueyou’, age:21 } );

0.创建, 在集合中创建一个文档.
Entity.save(callback);

1.构造一个集合, 参数1:集合名称, 参数2:Schema实例
db.model(“test1”, TestSchema );

2.查询, 参数1查询条件,或为空对象则返回所有集合文档
model.find({}, callback);

3.查询找到的第一个文档
model.findOne({}, callback);

4.查询找到的第一个文档,同上. 但是只接受 __id 的值查询
model.findById(‘obj._id’, callback);

5.创建, 在集合中创建一个文档
Model.create(文档数据, callback))

6.更新,参数1:查询条件, 参数2:更新对象,可以使用MondoDB的更新修改器
Model.update(conditions, update, function(error)

7.删除, 参数1:删除条件
Model.remove(conditions,callback);

8.集合中所有的文档数量
Model.count(sortType, function(err, total)

游标

limit(3) 限制返回结果的数量,
skip(3) 跳过前3个文档,返回其余的
sort( {“name”:1 , “age”:-1 } ) 排序 键对应文档的键名, 值代表排序方向
hint({close:1}) 强制查询优化器选择某个特殊的索引

mongoose中的exec和then的疑惑?

两者返回的都是 promise对象

exec一般用于独立的动作一次性执行,
then则用于连续性的动作

从其方法名也可以区别它们的用法,exec就是执行的意思,
then就是然后怎么怎么,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值