Как я могу вставить данные в поле массива MongoDB, используя существующее поле в документах? - PullRequest
0 голосов
/ 22 апреля 2019

Мне нужно отправить данные в поле массива MongoDB, используя существующее поле в тех же документах.

Например, я хочу обновить следующее имя коллекции naver_fl_logs, которое содержит следующие данные:

[{
 '_id': ObjectId('5cbd2e4c6e4b1401ad2359ba'), 'goodsNo': 3, 'recentFlStart': '2019-04-01 00:00:00', 'regDtList': [], 'recentFlEnds': null
 }
 ,{
 '_id': ObjectId('5cbd2e4c6e4b1401ad2359ba'), 'goodsNo': 3, 'recentFlStart': '2019-04-02 00:00:00', 'regDtList': [], 'recentFlEnds': null
 }]

до этого формата.

[{
 '_id': ObjectId('5cbd2e4c6e4b1401ad2359ba'), 'goodsNo': 3, 'recentFlStart': '2019-04-01 00:00:00', 'regDtList': [{
                                                                                                                  'regDtStart':'2019-04-01 00:00:00',regDtEnd:'2019-04-04 00:00:00'
                                                                                                                  }]

 , 'recentFlEnds': null
 }
 ,{
 '_id': ObjectId('5cbd2e4c6e4b1401ad2359ba'), 'goodsNo': 3, 'recentFlStart': '2019-04-02 00:00:00', 'regDtList': [{
                                                                                                                  'regDtStart':'2019-04-02 00:00:00',regDtEnd:'2019-04-04 00:00:00'
                                                                                                                  }]

 , 'recentFlEnds': '2019-04-04 00:00:00'
 }]

, где поля recentFlEnds и regDtEnd в поле regDtList обновлены с тем же значением, однако поле regDtEnd в поле regDtList обновлено с помощью recentFlStart поле в тех же документах.

Я пробовал следующий код:

naver_fl_logs.update_many(
            {"goodsNo":{"$in":goods_no_list}},
            {"$push":{"regDtList":{"regDtStart":"$recentFlStart","regDtEnd":nowtime_str}},
            "$set":{"recentFlEnds":nowtime_str}}
        )

, однако только поле regDtStart имеет значение "$ RecentFlStart" (которое является чистой строкой).

...