猫鼬填充除ID以外的2个集合字段

时间:2019-04-28 10:48:18

标签: mongodb mongoose mongoose-schema mongoose-populate

我有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上将两者合并,因为这是2个集合之间唯一的共同点。

在此字段中未确切了解如何使用.populate()

无法通过创建架构在库存架构中添加Price ref来更改数据库中的现有数据。

需要找到一种特殊股票,其中所有价格已在Symbol上合并。

1 个答案:

答案 0 :(得分:1)

填充不适用于String字段。您必须使用$lookup聚合(作为LEFT外部联接),并从两个公共字段都匹配的引用集合中提取数据。

Stock.aggregate([
  { "$lookup": {
    "from": Price.collection.name,
    "localField": "Symbol",
    "foreignField": "symbol",
    "as": "prices"
  }}
])