删除一条数据:传入id
Model.remove({ _id: 传入的id });
删除多条数据,传入id数组,使用$in方法
Model.remove({ _id: { $in: [‘aID’, ‘bID’] } });
同理,mongoose多个id同时查询,把方法名换为find即可
传入一个id查询一条数据:
Model.find({ _id: 传入的id });
传入多个id,查询多条数据,传入id数组,使用$in方法
Model.find({ _id: { $in: [‘aID’, ‘bID’] } });
增©
Model.create(doc(s), [callback])
var doc = ({
title: "Mongoose",
author: "L",
body: "Documents are instances of out model. Creating them and saving to the database is easy",
comments: [{ body: "It's very cool! Thanks a lot!", date: "2014.07.28" }],
hidden: false,
meta: {
votes: 100,
favs: 99
}
};
blogModel.create(doc, function(err, docs){
if(err) console.log(err);
console.log('保存成功:' + docs);
});
Model#save([options], [options.safe], [options.validateBeforeSave], [fn])
var blogEntity = new blogModel({
title: "Mongoose",
author: "L",
body: "Documents are instances of out model. Creating them and saving to the database is easy",
comments: [{ body: "It's very cool! Thanks a lot!", date: "2014.07.28" }],
hidden: false,
meta: {
votes: 100,
favs: 99
}
});
blogEntity.save(function(err, docs){
if(err) console.log(err);
console.log('保存成功:' + docs);
});
Model.insertMany(doc(s), [options], [callback])
多条数据插入,将多条数据一次性插入,相对于循环使用create保存会更加快。
blogModel.insertMany([
{title: "mongoose1", author: "L"},
{title: "mongoose2", author: "L"}
], function(err, docs){
if(err) console.log(err);
console.log('保存成功:' + docs);
});
查®
Model.find(conditions, [projection], [options], [callback])
conditions:查询条件;projection:控制返回的字段;options:控制选项;callback:回调函数。
blogModel.find({title: "Mongoose", meta.votes: 100}, {title: 1, author: 1, body: 1}, function(err, docs){
if(err) console.log(err);
console.log('查询结果:' + docs);
})
查询“title”标题为“Mongoose”,并且“meta”中“votes”字段值为“100”的记录,返回仅返回“title”、“author”、“body”三个字段的数据。
Model.findOne([conditions], [projection], [options], [callback])
conditions:查询条件;projection:控制返回的字段;options:控制选项;callback:回调函数。
只返回第一个查询记录。
Model.findById(id, [projection], [options], [callback])
id:指定_id的值;projection:控制返回的字段;options:控制选项;callback:回调函数。
改(U)
Model.update(conditions, doc, [options], [callback])
conditions:查询条件;doc:需要修改的数据,不能修改主键(_id);options:控制选项;callback:回调函数,返回的是受影响的行数。
options有以下选项:
safe (boolean): 默认为true。安全模式。
upsert (boolean): 默认为false。如果不存在则创建新记录。
multi (boolean): 默认为false。是否更新多个查询记录。
runValidators: 如果值为true,执行Validation验证。
setDefaultsOnInsert: 如果upsert选项为true,在新建时插入文档定义的默认值。
strict (boolean): 以strict模式进行更新。
overwrite (boolean): 默认为false。禁用update-only模式,允许覆盖记录。
blogModel.update({title: "Mongoose"}, {author: "L"}, {multi: true}, function(err, docs){
if(err) console.log(err);
console.log('更改成功:' + docs);
})
以上代码先查询“title”为“Mongoose”的数据,然后将它的“author”修改为“L”,“multi”为true允许更新多条查询记录。
Model.updateMany(conditions, doc, [options], [callback])
一次更新多条
Model.updateOne(conditions, doc, [options], [callback])
一次更新一条
Model.findByIdAndUpdate(id, [update], [options], [callback])
id:指定_id的值;update:需要修改的数据;options控制选项;callback回调函数。
options有以下选项:
new: bool - 默认为false。返回修改后的数据。
upsert: bool - 默认为false。如果不存在则创建记录。
runValidators: 如果值为true,执行Validation验证。
setDefaultsOnInsert: 如果upsert选项为true,在新建时插入文档定义的默认值。
sort: 如果有多个查询条件,按顺序进行查询更新。
select: 设置数据的返回。
Model.findOneAndUpdate([conditions], [update], [options], [callback])
conditions:查询条件;update:需要修改的数据;options控制选项;callback回调函数。
options有以下选项:
new: bool - 默认为false。返回修改后的数据。
upsert: bool - 默认为false。如果不存在则创建记录。
fields: {Object|String} - 选择字段。类似.select(fields).findOneAndUpdate()。
maxTimeMS: 查询用时上限。
sort: 如果有多个查询条件,按顺序进行查询更新。
runValidators: 如果值为true,执行Validation验证。
setDefaultsOnInsert: 如果upsert选项为true,在新建时插入文档定义的默认值。
passRawResult: 如果为真,将原始结果作为回调函数第三个参数。
删(D)
Model.remove(conditions, [callback])
blogModel.remove({author: "L"}, function(err, docs){
if(err) console.log(err);
console.log('删除成功:' + docs);
})
删除“author”值为“L”的记录。
Model.findByIdAndRemove(id, [options], [callback])
id:指定_id的值;update:需要修改的数据;options控制选项;callback回调函数。
options有以下选项:
sort: 如果有多个查询条件,按顺序进行查询更新。
select: 设置数据的返回。
Model.findOneAndRemove(conditions, [options], [callback])
conditions:查询条件;update:需要修改的数据;options控制选项;callback回调函数。
options有以下选项:
sort: 如果有多个查询条件,按顺序进行查询更新。
maxTimeMS: 查询用时上限。
select: 设置数据的返回。