【发布时间】:2022-01-21 02:46:35
【问题描述】:
我有一个带有嵌入数组的文档集合:
{
name: 'doc1',
events: []
},
{
name: 'doc1',
events: [{eventName: 'e1', times: 10}, {eventName: 'e2', times: 1}]
}
如何将事件添加到嵌入式数组并增加“时间”值?我不想在事件数组中有重复的事件名称。
更新: 我更改了模型以使查询更简单。而不是
events: [{eventName: 'e1', times: 10}, {eventName: 'e2', times: 1}]
型号是:
events: { e1: 10, e2: 1}
现在使用简单的查询更新文档要容易得多。 但仍然很好奇是否有人在不更改数据模型的情况下提出了一个简单易读的查询。
.events.updateOne({name: 'doc1'}, { $inc: {events.e1: 1}});
【问题讨论】:
-
增加所有
times值? -
假设 doc1 有一个新事件 'e2' 然后我期望并更新该结果 -> { name: 'doc1', events: [{eventName: 'e1', times: 10}, {事件名称:'e2',次数:2}] }
-
$addToSet的问题是,元素是{eventName: 'e2', times: 1}而不是{eventName: 'e2'},这使得(我认为)不可能使用简单的$addToSet
标签: mongodb mongoose mongodb-query