Мангуста найди один и нажми на массив документов

Я новичок в MongoDB и Mongoose, и я пытаюсь использовать его для сохранения биржевых тиков для анализа дневной торговли. Итак, я представил эту схему:

symbolSchema = Schema({
    name:String,
    code:String
});

quoteSchema = Schema({
    date:{type:Date, default: now},
    open:Number, 
    high:Number,
    low:Number,
    close:Number,
    volume:Number
});

intradayQuotesSchema = Schema({
    id_symbol:{type:Schema.Types.ObjectId, ref:"symbol"},
    day:Date,
    quotes:[quotesSchema]
});

По моей ссылке я получаю такую ​​информацию каждую минуту:

дата | символ | открыть | высокая | низкий | закрыть | объем

2015-03-09 13: 23: 00 | AAPL | 127,14 | 127,17 | 127,12 | 127,15 | 19734

Мне пришлось:

Найдите ObjectId символа (AAPL).Узнайте, существует ли внутридневной документ с этим символом (комбинация символа и даты)Выясните, есть ли в массиве кавычек минутные данные OHLCV этого символа (потому что их можно повторить)Обновить или создать документ и обновить или создать кавычки внутри массива

Я могу выполнить эту задачу без лишних усилий, если кавычки уже существуют, но этот метод может создавать повторяющиеся записи в массиве кавычек:

symbol.find({"code":mySymbol}, function(err, stock) {
    intradayQuote.findOneAndUpdate({
        { id_symbol:stock[0]._id, day: myDay },
        { $push: { quotes: myQuotes } },
        { upsert: true },
        myCallback
    });
});

Я уже попробовал:

$ addToSet вместо $ push, но, к сожалению, это не работает с массивом документов{id_symbol: stock [0] ._ id, day: myDay, 'quotes ["date"]': myDate} на условияхfindOneAndUpdate; но, к сожалению, если Монго не находит его, он создает новый документ за минуту вместо добавления в массив кавычек.

Есть ли способ заставить это работать без использования еще одного запроса (я уже использую 2)? Должен ли я переосмыслить свою схему, чтобы облегчить эту работу? Любая помощь будет оценена. Спасибо!

Ответы на вопрос(0)

Ваш ответ на вопрос