Nano Hash - криптовалюты, майнинг, программирование

Совокупное совпадение Mongoose и поле добавления с предоставленным индексом списка

Мне нужно обновить порядок полей документа на основе индекса массива, который я передал. Но когда я вызываю этот API, конечным результатом является [], и никаких ожидаемых изменений в базе данных. Нужны ваши советы

массив, который я передал, это:

["5c1b9f2b66922a77ec7116a1", "5c1b9d4a66922b77ec81169f"]

exports.update_item_order = (req, res, next) => {
      const idList = req.body.idList;
      if (!idList) {
        res.status(400).json({
          message: "Missing request paramaters"
        });
      }
      vouchers.aggregate([{
        "$match": {
          "_id": {
            "$in": idList
          }
        }
      }, {
        "$addFields": {
          "order": {
            "$indexOfArray": [idList, "$_id"]
          }
        }
      }, {
        "$sort": {
          "order": 1
        }
      }]).exec((err, result) => {
        if (err) {
          return res.status(500).json();
        }
        return res.status(200).json({
          message: 'Status update successfully',
          result
        })
      })
    };

Коллекция образцов, из которой я извлекаю

введите здесь описание изображения


  • Возможный обман stackoverflow.com/ вопросы/52869651/ 21.12.2018
  • Большое спасибо, теперь я могу использовать $match, я все еще пытаюсь понять, как использовать $in, так как мангуст не может автоматически преобразовать строку в objectId 21.12.2018

Ответы:


1

Вам нужно перебрать массив ids и преобразовать их в мангуст ObjectId

import mongoose from 'mongoose'

const ids = ["5c1b9f2b66922a77ec7116a1", "5c1b9d4a66922b77ec81169f"].map(id => mongoose.Types.ObjectId(id))

vouchers.aggregate([
  { "$match": { "_id": { "$in": ids }}},
  { "$addFields": {
    "order": {
      "$indexOfArray": [ids, "$_id"]
    }
  }},
  { "$sort": { "order": 1 }}
])
21.12.2018
  • Большое спасибо за ваш метод, он отлично работает, теперь я разбираюсь в том, как присвоить индекс массива полям базы данных :) Я проголосую за него, так как он решает часть этого :) спасибо 21.12.2018
  • Обновлен мой ответ 21.12.2018
  • У меня есть вопрос об агрегации MongoDB и агрегации мангуста, все ли они используют одни и те же ключевые слова, такие как $addFields или $addToSet, потому что я не могу найти документацию по мангусту, в которой говорится, что они поддерживают эти ключевые слова. 21.12.2018
  • Mongoose — это инструмент объектного моделирования для mongodb. Mongoose имеет те же запросы и функции, что и mongodb. Вы можете ссылаться на документы mongoose здесь. Ничего особенного по сравнению с mongodb 21.12.2018
  • Спасибо, вы спасли мой день. Я увидел свой результат, и поля назначены правильно. но после того, как я обновлю свою MongoDB, в моих документах нет поля «порядок». но я отмечу это как ответ, так как он решает запрос. :) кстати, спасибо, мне удалось заставить ваш код работать после удаления двойной кавычки из каждого ключевого слова $xxx. может быть, вы можете обновить его, чтобы другие могли получить правильный 21.12.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..