使用mongoose的findOneAndUpdate、findAndModify两个方法,返回的数据是未更新的数据,但是库里的数据已经更新了;
于是认真的查了方法定义找到了答案:
说的很清楚了,new属性true返回修改后的document;false返回原始数据;
总结:mongoose提供的findOneAndUpdate、findAndModify的两个方法,默认返回原始的数据,需要将new属性设置为true,返回更新后的数据
使用mongoose的findOneAndUpdate、findAndModify两个方法,返回的数据是未更新的数据,但是库里的数据已经更新了;于是认真的查了方法定义找到了答案:说的很清楚了,new属性true返回修改后的document;false返回原始数据;总结:mongoose提供的findOneAndUpdate、findAndModify的两个方法,默认返回原始的数据,需要将new属性...
为什么用Node
js
?为什么用
MongoDB
?从领域语言和代码简洁之道来看,这是我非常关心的问题。Node
js
基于Javascript,
MongoDB
脚步同样也是基于Javascript。而且他们的
数据
存储格式都是
JS
ON,这就是为什么要把他们放在一起的原因了。如果程序前后端能直接处理
JS
ON,我想
数据
处理过程又可以极大的减化了,代码量又将低少1/5。多么的兴奋啊!让我们来动手验证一下想法吧。本文重点介绍web前端通过JQuery发起POST提交
JS
ON
数据
,通过
Mongoose
直接插入或
更新
到
MongoDB
。工程目录沿用node
js
-demo,增加/
mongoose
路径及对应文件。从零开始n
A.findByIdAnd
Update
(id,
update
, options, callback) // executes
A.findByIdAnd
Update
(id,
update
, options) // returns Query
A.findByIdAnd
Update
(id,
update
, callback) // executes
A.findByIdAnd
Update
(id, ...
update
已被弃用,
返回
{n:1, nModified:1}
返回
{n:1, nModified:1}
更新
一个就用
update
One,是对
update
的封装,不支持{multi:true}属性,加了也没用,
返回
{n:1, nModified:1}
返回
{n:1, nModified:1}
更新
多个就用
update
Many,是对
update
的封装,自动加入了{multi:true}属性,设为...
// 执行修改操作
const task = await Task.find
OneAnd
Update
({_id: req.body._id}, _.pick(req.body, ['title', 'completed']),{new: true})
//find
OneAnd
Update
()默认
返回
原始的
数据
//其中{_id: req.body._id}按id=req.body._id进行查询
//其中{new: true},需要将new属性设置为true,
返回
更新
后的
数据
//其中_.pick()为lo
mongodb
不支持事务,所以,在你的项目中应用时,要注意这点。无论什么设计,都不要要求
mongodb
保证
数据
的完整性。
但是
mongodb
提供了许多原子操作,比如文档的保存,修改,删除等,都是原子操作。
所谓原子操作就是要么这个文档保存到
Mongodb
,要么没有保存到
Mongodb
,不会出现查询到的文档没有保存完整的情况。
原子操作
数据
模型
考虑下面的例子,图...
(
mongodb
是真的香,小声BB)
使用
mongodb
的Find
OneAnd
Update
()方法。具体实现:
// collection 为 某一个具体的Collection.
var prototype xxx // 你自己的
数据
结构
id, err := primitive.ObjectIDFromHex("xxxxxxxxx") // 转为id值
filter := bson.D{{"_id": id}} //查询id
after := option
Mongoose
: `find
OneAnd
Update
()` and `find
OneAnd
Delete()` without the `useFind
AndModify
` option set to false are deprecated
Mongoose
:不推荐使用未将“useFind
AndModify
”选项设置为false的“FindAndD
upDate
()”和“FindAndDele...
mongodb
提供了一种原子性的操作,find
andmodify
,但它只满足原子性,不具备事务的特性,事务具有四种特性:原子性,隔离性,一致性,持久性。find
AndModify
在高并发下有可能会出现以下情况,比如有两个线程t1 t2:
t1读,t2读,t1写,t2写 这个时候有可能两个线程return的结果都是原来库里边的值,而不是
更新
所期望的 t2会获取到t1插入到
数据
库里的值,这点在
由于发现mongo
更新
太快,跟我之前所学有很多差异;尤其是聚合操作,比较早的版本只有group和mapreduce两个函数,不支持avg、max、min、sum这些操作,现在除了增加了这些常用操作以外还提供了更加丰富的聚合功能。
从这一篇开始将按照这个url里面的内容介绍:http://docs.
mongodb
.org/manual/reference/operator/。
撰写博客...
Node
js
基于Javascript,
MongoDB
脚步同样也是基于Javascript。而且他们的
数据
存储格式都是
JS
ON,这就是为什么要把他们放在一起的原因了。如果程序前后端能直接处理
JS
ON,我想
数据
处理过程又可以极大的减化了,代码量又将低少1/5。多么的兴奋啊!让我们来动手验证一下想法吧。
本文重点介绍web前端通过JQuery发起POST提交
JS
ON
数据
,通过
Mongoose
直接插入或
更新
到
MongoDB
。
工程目录沿用node
js
-demo,增加/
mongoose
路径及对应文件。
配置
Mongoose
创建目录及文件
插入
数据
,POST提交
JS
ON增加一
看完了Node.
js
实战,其中在
数据
存储部分提到了Redis、
Mongodb
,我自己也根据书中的介绍写了几个简单的demo,在demo的过程首先遇到的问题就是
数据
类型和常见的CURD写法。
mongodb
的常见操作有两种方式,一个是直接使用API,也就相当于你在SQL Server客户端中使用T-SQL编写SQL语句来操作
数据
一样,其次就是在程序中使用
mongoose
驱动来操作
数据
,相当于我们在程序里用ADO.NET或EF来操作
数据
,如果你已经写了几个调用API的demo,那么我建议再回过头来看看
mongoose
的API,多看API,并且记住常见的几个方法比如where,s
$ npm install --save @lykmapipo/
mongoose
-faker
const
mongoose
= require ( '
mongoose
' ) ;
mongoose
. plugin ( require ( '
mongoose
-faker' ) ) ;
const Schema =
mongoose
. Schema ;
const UserSchema = new Schema ( {
name : {
type : String ,
fake : {