Mongoose使用Id以外的2个Collections字段填充

问题描述 投票:1回答:1

我有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()与此字段。

无法通过创建模式来更改数据库中的现有数据以在Stock Schema中添加Price ref

需要找到一个特殊的股票,所有价格合并在符号上。

mongodb mongoose mongoose-schema mongoose-populate
1个回答
1
投票

Populate不适用于String字段。您必须使用$lookup聚合作为LEFT外连接,并从引用的集合中提取数据,其中两个公共字段匹配。

Stock.aggregate([
  { "$lookup": {
    "from": Price.collection.name,
    "localField": "Symbol",
    "foreignField": "symbol",
    "as": "prices"
  }}
])
© www.soinside.com 2019 - 2024. All rights reserved.