Mongoose使用
[[toc]]
链接mongo
const mongoose = require('mongoose'); const config = require('../../config/common');
const dbConfig = config[process.env.NODE_ENV || 'development'];
mongoose.connect(dbConfig.mongo.url, {useNewUrlParser: true});
mongoose.set('useCreateIndex', true);
mongoose.connection.on('connected', function () { });
mongoose.connection.on('error', function (err) { console.log('连接失败 ' + err); });
mongoose.connection.on('disconnected', function () { console.log('断开连接'); });
|
定义Schema
Schema.Type
- String
- Number
- Date
- Buffer
- Boolean
- Mixed
- Objectid
- Array
var mongoose = require('mongoose'); var Schema = mongoose.Schema;
var UserSchema = new Schema({ name : { type: String, unique: true }, posts : [{ type: Schema.Types.ObjectId, ref: 'Post' }] }); var User = mongoose.model('User', UserSchema);
var PostSchema = new Schema({ poster : { type: Schema.Types.ObjectId, ref: 'User' }, comments : [{ type: Schema.Types.ObjectId, ref: 'Comment' }], title : String, content : String }); var Post = mongoose.model('Post', PostSchema);
var CommentSchema = new Schema({ post : { type: Schema.Types.ObjectId, ref: "Post" }, commenter : { type: Schema.Types.ObjectId, ref: 'User' }, content : { main: String, label: String }, points: [ point: [{type: Schema.Types.ObjectId, ref: 'Point'}] ] }); var Comment = mongoose.model('Comment', CommentSchema);
var PointSchema = new mongoose.Schema({ name: String, parent: {type: Schema.Types.ObjectId, ref: 'point'}, children: [{type: Schema.Types.ObjectId, ref: 'point'}] }) var Point = mongoose.model('Point', PointSchema);
|
查询条件
$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个元素)
|
mongodb对数组中的所有元素进行一次性修改方法
$[]
可以通过$[element] 配合 $cond 条件操作符等,来达到对数组的符合条件的元素统一更新。
{ name: 4, list: [{ id: "a", date: 1504195200000, other: "c" },{ id: "b", date: 1504195200000, other: "c" }] }
|
现在要把other全部更新为”a”,方法如下:
db.getCollection('test').update({'name': 4}, {$set: {'list.$[].other': 'a'}}, {multi: true})
|
总结中…