- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 MongoDB/Node 后端,我试图编写一个函数来接收用户输入的 ID,然后更新一个名为 subscription.subscriptionEnd
的字段,该字段与每个传入的 ID 相匹配。
我要更新的值对于所有输入的记录都是相同的。我的挑战是在名为“订阅”(位于文档的根目录)的数组中定位正确的元素。我想要做的只是为每个与输入的 ID 之一匹配的数组元素更新 subcriptionEnd
属性。
我的数据是这样的:
{
"_id": "1234",
"name": {
"first": "John",
"last": "Smith"
},
"branch": "New York",
"dob": null,
"subscription": [
{
"field1": null,
"field2": null,
"subscriptionEnd": "2015-05-31T00:00:00.000Z",
"_id": "7777"
},
{
"field1": null,
"field2": null,
"subscriptionEnd": "2015-05-31T00:00:00.000Z",
"_id": "9999"
}
]
}
因此,想象这样一种情况,我只想为“_id”为“7777”的数组元素更新“subscriptionEnd”属性值,而不为“_id”为“9999”的数组元素更新.
如何正确制作这些 map ?昨天的一位评论者通过执行以下操作提到了动态映射:
db.collection('clients').updateMany(
{ _id: { $in: mongoArrRecords }, "subscription.someOtherProp":value},
{ $set: { "subscription.$.subscriptionEnd": lastDayOfMonth } }
)
但我不清楚在这种情况下是什么映射到什么。有没有一种方法可以确保此映射正确 - 仅针对包含输入 ID 之一的相同数组元素?
当然,如果我知道有问题的数组元素,我可以直接定位,如下所示:
db.collection('clients').updateMany(
{ _id: { $in: mongoArrRecords } },
{ $set: { "subscription.0.subscriptionEnd": lastDayOfMonth } }
)
但是我不知道这个。
我做知道的是它是相同的数组元素,其中 _id
作为数组的一部分通过 $in
传入运算符映射到。
最佳答案
您需要使用两个数组属性。一个要查询的数组属性和另一个要更新的数组属性。
尝试
db.collection('clients').updateMany(
{ "subscription._id":{ $in: mongoArrRecords }},
{ $set: { "subscription.$.subscriptionEnd": lastDayOfMonth } }
)
只要您为一个数组定位一个 objectid,这应该有效。
您可以使用 [<identifier>]
扩展上述方法使用 3.6 中的 arrayFilters 概念定位单个文档中的多个数组元素。
db.collection('clients').updateMany(
{ },
{ $set: { "subscription.$[subr].subscriptionEnd" : lastDayOfMonth } },
{
arrayFilters: [{ "subr._id":{ $in: mongoArrRecords }} ]
}
)
关于javascript - 使用 updateMany() 和 MongoDB 时映射到正确的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49325728/
使用 .updateMany(filter, update, option) 时。如何为每个文档设置动态过滤器字段? 我有一系列这样的文件: [ { time: 1,
在我的应用程序中,我有一个名为 Blog 的集合我每 24 小时运行一次这个查询 await Blog.updateMany({}, [ { $set: { v
我有代表用户的文档,其中的入职数据存储为嵌套对象: { "_id" : ObjectId("5c7eb0132e6f793bcc7f4bf7"), "userName" : "samp
我有一个大型数据库,其中存在各种不一致之处。我想澄清的项目之一是根据人口更改国家/地区状态。 数据样本是: { "_id" : "D", "name" : "Deutschland", "pop" :
期望的行为 更新多个文档中的属性值后,访问每个更新文档的更新属性值。 (就上下文而言,我会增加多个用户的通知计数,然后通过 socket.io 将每个更新后的值发送回相应的用户(如果他们已登录)) 我
我有一个最新的 mongodb 3.2,并且有许多具有时间戳的项目的集合。 需要将毫秒转换为 Date 对象,现在我使用这个函数: db.myColl.find().forEach(function
记录示例: {name: anUserInfo.name, userid: anUserInfo.userid, deviceToken: anUserInfo.deviceToken, email:
假设我们有代码: await Employees.updateMany( { InsertDate: { $gte: _yesterday
我正在尝试在 MongoCollection 中插入/更新许多记录。我有一份需要更新的文档列表。 List Documents; 该列表包含一些要插入的新记录以及其他需要更新的现有记录。我正在研究方法
有什么方法可以让我在updateMany 中使用当前索引或文档编号或游标ID方法? 例如: db.collection("users").updateMany({}, { $set: {"uname"
db.movieDetails.updateMany({ "tomato.consensus": null, "imdb.votes":{$lt:10000}, "year":
我想知道它是否更快(导入)使用 updateone或 updatemany使用批量写入。我使用 pymongo 外观将数据导入集合的代码是这样的: for file in sorted_files:
在我的 MongoDB/Node 后端,我试图编写一个函数来接收用户输入的 ID,然后更新一个名为 subscription.subscriptionEnd 的字段,该字段与每个传入的 ID 相匹配。
Node API,我们有 Mongo 配置文件集合,每个配置文件都有 subscription_plan ,它代表他们为使用应用程序付费的剩余天数。现在,我在后端工作,这应该将所有配置文件的 subs
描述 MongoDB 的 updateMany与 $rename 一起使用时,方法不会更新任何文档在某些领域。 示例 我尝试重命名字段blog.blog_ttile和blog.blog_cotnet
从 mongo > documentDB 迁移后,我尝试使用 substr 执行更新,但是我收到一个奇怪的错误。 以下使用 pymongo 在 Mongo 4.0 上运行: await db[
AFAIK,这两个操作都可以更新多个文档。如果是这样,两者之间有什么区别? 最佳答案 只是引用 API docs这里 bulkWrite Sends multiple insertOne, updat
在我的 MongoDB/Node 后端中,我有一个函数,可以根据传入的订阅 _ids 更新标题为 subscriptionEnd 的字段上的日期。它看起来像这样: try { db
我正在尝试更新 MongoDB 数据库中的所有记录。我想根据日期(updatedAt)按升序对记录进行排序。然后根据其当前状态(currentStatus)更新有限数量的记录。 这些字段是这样的: 我
我在尝试验证 Model::updateMany(或 update + mutli:true)请求内修改的文档架构时遇到了 Mongoose 架构验证问题。我有以下架构: var Business
我是一名优秀的程序员,十分优秀!