问题标签 [findandmodify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8092 浏览

mongodb - MongoDB 中的 FindAndUpdate 与更新

我正在使用 Update 和 FindAndModify 但现在我已经读到 Update 和 FindAndModify 是原子的(http://docs.mongodb.org/manual/tutorial/model-data-for-atomic-operations/),

因此,如果两者都可以通过查询项目并更新它来完成相同的工作,那么有什么区别?

我在 StackOverflow 上找到了几个答案,但没有一个提到 Update 也是原子的:在 MongoDB 中 findAndModify 和 update 有什么区别?

0 投票
1 回答
1263 浏览

mongodb - 我可以在带有 MongoDB 的深层嵌套文档上使用 findAndModify 之类的东西吗?

我的MongoDB 中有带有以下文档的 Collection上下文(上下文中有一些用户具有角色

有没有办法使用findAndModify用户添加(或删除)角色

0 投票
1 回答
2940 浏览

node.js - mongodb 中的 findAndModify 错误 - nodejs - 错误代码 17287

我收到以下错误:

MongoError:异常:nextSafe():{ $err:“无法规范化查询:B adValue 错误排序规范”,代码:17287 }

0 投票
1 回答
214 浏览

mongodb - 有没有办法只获取找到的文档作为 findAndModify 的结果而没有包装信息

我有一个findAndModifyMongoDb 请求。mongo 服务器将文档包装在:

有没有办法只从value密钥中获取对象?

0 投票
1 回答
549 浏览

node.js - node.js/MongoDb 中的 findAndModify 用法

我有一个集合,其中显示了用户列表以及他们最喜欢的电影。这是一个示例数据集...

现在给定_id545c08dcc4d2b8a0243dd4db和一部电影

如果我需要在 Node.js/MongoDB 中将其添加到 watch_movies,我相信唯一的方法是

  1. 使用 Find 查找文档
  2. 通过附加到watched_movies 数组对找到的文档执行findAndModify。

第 2 步基于此处的示例 http://mongodb.github.io/node-mongodb-native/markdown-docs/insert.html

有一个更好的方法吗 ?具体来说,我可以避免步骤#1 吗?

这是我在做第 2 步的方法。但我不得不执行步骤#1 来获取“watched_movies”元素,然后将新电影附加到它以构建movielist

我也愿意接受有关改进此架构设计的建议。

0 投票
1 回答
6590 浏览

mongodb - findAndModify 是否有效锁定文档以防止读取冲突?

假设文档的结构如下:
{_id:"session-01", status:"free"}

并且有 2 个并发操作执行以下findAndModify操作: db.collection.findAndModify({query:{status:"free"}, update:{status:"occupied"}, new:true})

我想要实现的是只有一个操作可以获得“免费”一个,并对其执行锁定,所以另一个操作必须为空。这就是 findAndModify 的作用吗?

0 投票
1 回答
656 浏览

mongodb - mongo db 添加来自另一个集合的子文档

我有两个收藏奖团队赢得了团队列表。我想将整个奖项作为子文档进行 ETL 到其他(团队)中,并进行一些小的转换,但我只从奖项中获得一个子文档到团队中。

这是我使用的代码。Teams 有一个唯一的数字索引,看起来像最终文档减去 accolade 子文档。但是,数组中只添加了一个 accolade 子文档。我错过了什么?

示例奖项(团队可以赢得多个奖项,荣誉是奖项的集合,以便以后汇总):

以下是仅添加一项荣誉的团队变成的样子:

我本来希望将两个荣誉添加到数组中。我是否需要将奖励对象 ID 携带到团队子文档中?

0 投票
1 回答
1451 浏览

mongodb - 初始值不为零的MongoDB计数器

我想创建一个从 1000 开始的计数器。

即 upsert 一个 mongodb 文档如下

  • 如果文档不存在,则使用值 1000 创建它
  • 如果文档已经存在,则增加值 +1

以下不起作用:

有没有办法告诉 upsert 对于插入,它需要 $set 1000,但对于更新,它需要 $inc 1 ?

0 投票
3 回答
792 浏览

java - 如何插入包含列表的 mongo(或 spring-mongo)文档

我正在尝试确定是否有一种方法使用 spring-mongodb(甚至使用 mongo java API)来更新包含列表的文档,以便列表的元素始终是更新插入的值的联合。

假设我有以下类(为了简化事情而组成):

此外,假设我只获得最新阅读书籍的更新,但我想在数据库中保留所有阅读书籍的完整列表。所以我想做的是插入一个 Patron (with booksRead) 如果它不存在或更新他们的 booksRead 如果 Patron 已经存在。

所以,第一个 upsert 'John Doe' 不在集合中,所以文档被插入并且看起来像这样:

约翰重读了《愤怒的葡萄》,也读了《人鼠之间》。在阅读书籍时尝试插入 2 本书,但我只想在阅读列表中插入“Of Mice and Men”,因此文档如下所示:

我尝试过的一切似乎都表明需要将调用分开,一个用于插入,另一个用于更新。Update.set 适用于初始加载(插入),但会在第二次更新时替换完整列表。$addToSet 适用于更新,但抱怨尝试在初始插入时插入“非数组”。

更新:

这似乎是 Spring-mongodb 的问题。我可以通过 mongo java api 调用实现上述目标,但在使用 spring 等效项时它会失败。(至少到 spring-data-mongodb 1.6.2)

0 投票
1 回答
6125 浏览

mongodb - 如何使用golang在mongodb中findAndModify一条记录?

我想要这样的东西:

  1. 在 mongo db 中找到一条记录old_record
  2. 将此记录更新为new_record
  3. 返回old_record

我写这样的代码:

find但是,我认为update应该是一个atomic操作,所以我的代码是不安全的。

我怎样才能在原子操作中做到这一点