Мангуст Заполните 2 поля коллекций, кроме Id - PullRequest
1 голос
/ 28 апреля 2019

у меня 2 схемы

Схема акций

var Stocks = new Schema({
    Symbol : String,
    Name : String,
    MarketCap : Number,
    Sector : String,
    Industry : String
});
mongoose.model('Stocks', Stocks, 'Stocks'); 

Ценовая схема

var Prices = new Schema({
    date : Date,
    symbol : String,
    open : Number,
    close : Number,
    low : Number,
    high : Number,
    volume : Number
});
mongoose.model('Prices', Prices, 'Prices');

Мне нужно объединить оба на Symbol, так как это единственное, что является общим для двух коллекций.

Не совсем понятно, как использовать .populate() с этим полем.

Невозможно изменить существующие данные в базе данных, создав схему для добавления Price ref в схему запаса.

Необходимо найти конкретный запас со всеми ценами, объединенными в Symbol.

1 Ответ

1 голос
/ 28 апреля 2019

Заполнить не работает с полями String. Вы должны использовать агрегацию $lookup, которая работает как внешнее соединение LEFT, и извлекать данные из ссылочной коллекции, где совпадают оба общих поля.

Stock.aggregate([
  { "$lookup": {
    "from": Price.collection.name,
    "localField": "Symbol",
    "foreignField": "symbol",
    "as": "prices"
  }}
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...