在mongodb的数组搜索中使用upsert

问题描述 投票:0回答:1

我正在研究mongodb,并将数据库结构设为:

{
        "_id" : ObjectId("5e9fef05c0228a50befba0d7"),
        "name" : "sanghm",
        "id" : "3456",
        "dep" : {
                "dep1" : "ops",
                "dep2" : "analytics"
        },
        "data" : [
                {
                        "date" : "25-apr-2020",
                        "log" : [

                                {
                                        "machine" : "windows-user1",
                                        "task" : "excel",
                                          "time": "10:00am"
                                }
                                {
                                        "machine" : "windows-user1",
                                        "task" : "email",
                                          "time": "11:00am"
                                }

                        ]
                }
        ]
}

将每个新任务推送到数据库中,我正在使用类似的查询

date = '25-apr-2020'

db.inventory.update({id:'3456'},{{$push:{'data.$[t].log':{machine:'windows-user1',task:'new task',time:'3:00pm'}}},{arrayFilters:[{"t.date":date}]}})

此查询将新任务推送到日期数组。如果日期更改为“ 26-apr-2020”,那么我们可以使用相同的查询来首先添加新的归档日期,然后再推送相同的数据。

我已经阅读了有关{upsert: true}的信息,但在我的情况下不知道如何使用它

mongodb
1个回答
0
投票

双重嵌套很奇怪。通常,所有事件都将被平坦地存储在顶层data数组中,并且一个事件将在查询时按日期(如果需要)进行分组。

© www.soinside.com 2019 - 2024. All rights reserved.