我有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
。
需要找到一个特殊的股票,所有价格合并在符号上。
Populate不适用于String
字段。您必须使用$lookup
聚合作为LEFT外连接,并从引用的集合中提取数据,其中两个公共字段匹配。
Stock.aggregate([
{ "$lookup": {
"from": Price.collection.name,
"localField": "Symbol",
"foreignField": "symbol",
"as": "prices"
}}
])