如何写更新查询来更新多个字段在 mongodb 更新指定字段中

update set 多个字段,对应同一条件的多次查询咋办?
[问题点数:40分,结帖人whx20202]
update set 多个字段,对应同一条件的多次查询咋办?
[问题点数:40分,结帖人whx20202]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2010年 总版技术专家分年内排行榜第二
2009年 总版技术专家分年内排行榜第三
匿名用户不能发表回复!|如何写更新查询来更新多个字段在 mongodb 中_百度知道
如何写更新查询来更新多个字段在 mongodb 中
我有更好的答案
如何在mongodb 查询多个字段中的指定几个字段db.things.find({&name&: {$exists: true}, &country&: {$exists: true}})
采纳率:97%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
现在有一个需求是使用 MongoDB 查找文档的同时将文档中的字段给更新掉,也就是用一个命令完成查找以及更新(原子性)。Mongo 中对于单个文档是有类似的方法的,比如 FindAndModify 查找并更新的操作,并且是原子性的,但是只作用于单个文档。问下有没有可以实现查找多个文档并且相应的更新文档的字段的操作。
来源: MongoDB 技术问答
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
一、MongoDB中原子性:
1、针对单一文档都是原子性的,FindAnyModify只操作一个文档,所以是原子性的;
2、针对多个文档的操作,每一次对单个文档的操作实现了原子性,但是整个操作不是原子性的,在操作过程中可能有来自其他的针对其中文档的操作。
但是在大部分的场景下,单一文档的原子性已经满足要求了;
如果需要对多个文档的操作实现原子性,需要配合自己的代码/设计来实现了。
二、针对您的表述的需求,其实用update的multi选项,或者直接使用updateMany就可以达成。
db.collection.updateMany()
db.collection.update(,{multi : true})
Love MongoDB! Have Fun!
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
mongoose更新,可以批量操作,update的multi属性设置为true,
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。关于mongodb驱动中update两个方法的坑 - CNode技术社区
积分: 1995
南翔高等职业学院毕业!10年挖掘机经验!
 ● 2009年3月中旬在浙江宁波技嘉科技有限公司从事流水线工作..期间曾多次受到很多领导的好评。
  2009-4担任仓管员,负责仓库的统计.出货.清点等﹑生产线上所用工时﹑物料领用﹑﹑损耗及产出品量﹑入库量退货产品的返工统计汇总做报表,,协助财务盘点﹑仓库对帐等工作。仓库工作流程熟悉,且对所用到的办公软件能熟练操作。 因此领导让我担任仓库的叉车司机.
今天无意中发现一个问题,就是当进行update操作时,如果使用updateMany方法,当主键不存在时即使有upsert参数也不会自动创建,但是updateOne方法就可以,有谁知道原理的吗?还是说是个bug呢?
这个是直接从命令行模式下操作的,可以排除驱动的问题。应该针对所有语言都是这样。
更新操作是先查再更,默认是更新第一条查到的数据,想更新所有匹配数据集需要设置{multi:true}
Specify upsert: true for the update specific fields operation.
When you specify upsert: true for an update operation that modifies specific fields and no matching documents are found, MongoDB creates a new document using the equality conditions in the update conditions document, and applies the modification as specified in the update document.
沒看出啥問題啊
额 或许我没有描述清楚,我的目的是想对1、2、3、三条数据进行inc 1操作,前提是这三条都不存在或其中有些不存在的情况,这时候即使加上upsert也仅仅只创建出一条残缺数据,如果是少加muliti,最少也应该是有user字段的,但是结果很奇怪,仅仅有total字段的inc操作
问题点在于第一条更新出的是一条残缺字段。
追加下,测试用的是mongodb3.0 ,后来测试mongodb2.6也是同样的结果。
的確就是這樣的 這就是upsert的作用啊
我期望的结果是update多条不存在数据时能够像update一条那样创建出多条完整数据来。或许是我理解偏差了,update多条仅仅是指,比如user为1有多条,他会将这样的数据进行更新?
你要理解先查再更啊,如果你写这样的条件呢update({$gt:0}),你想让mongodb帮你创建多少条不存在的数据?
对于update的量是由我的$in控制的,并不是后面的修改器。那么我可以理解为当db.test.update({user:{$in:[1]}}, {$inc:{total:1}},{upsert: true, multi:true})这样其实是和db.test.update({user:1}, {$inc:{total:1}},{upsert: true, multi:true})是一样的效果。但是结果却并非如此。
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 mongodb 更新多个字段 的文章

 

随机推荐