Как сделать pu sh или получить несколько значений массива в MongoEngine или pymon go? - PullRequest
0 голосов
/ 12 марта 2020

Вот документ (имя - слово), пример:

{
"id":"xxxxxxxx",
"words":["hello","world","cat","dog","word1","word2"]
}

теперь у меня есть список слов, содержащий несколько слов, например:

["friend","hello","world","stack","question"]

У меня 2 операции ( Каждый раз я буду делать одно из них, а не все): 1. PU SH. Я хочу собрать все новые слова в массив, в данном случае это слово «друг», «стек», «вопрос». «Привет» и «Мир» уже существует, я не буду их sh втягивать. 2. ТЯНУТЬ. Я хочу вытащить какое-то слово, уже существующее в словах, в этом случае я хочу вывести слова «привет» и «мир».

Один из известных мне способов - это сделать для l oop, но, похоже, ужасно. Могу ли я встретить то, что мне нужно в 1 операции обновления? например, collection.update(query,op).
Я использую flask -MongoEngine, а также поддерживается Pymon go.

Ответы [ 2 ]

0 голосов
/ 12 марта 2020
if you want to push unique data into array then you can use $addToSet:

let update = await userRepo.getAllNotificationUpdate(
   {$addToSet: {read_by:req.user._id}}
 );

если вы хотите извлечь данные из массива, вы можете использовать $ pull. пожалуйста, проверьте ниже URL:

https://docs.mongodb.com/manual/reference/operator/update/pull/

0 голосов
/ 12 марта 2020

Попробуйте это:

db.collection.aggregate([
   {
      $set: {
         words: {
            $setUnion: ["$words", ["friend", "hello", "world", "stack", "question"]]
         }
      }
   },
   {
      $set: {
         words: {
            $filter: {
               input: "$words",
               cond: { $not: { $in: ["$$this", ["hello", "world"]] } }
            }
         }
      }
   }
])

Пн go детская площадка

NB, сначала добавьте "привет", "мир", а затем удалите его потом выглядит бессмысленно для меня.

...