0
我有以下模式:如何填充由Mongoose中的composite _id引用的字段?
var WorkSchema = new Schema({
_id: Object, // {client: String, project: Number}
title: String,
description: String
});
var TimeWorkedSchema = new Schema({
_id: Object, // {client: String, date: Date}
work: {type: Object, ref: 'Work'}, // {client: String, proyect: Number}
hours: Number,
description: String
});
var w = mongoose.model('Work', WorkSchema);
var tw = mongoose.model('TimeWorked', TimeWorkedSchema);
字段Work._id
和TimeWorked.work
是具有相同屬性的比較的對象。然後,我想填充TimeWorked模型與相應的工作數據和往常一樣:
tw.find().populate('work').exec(function(err, res){
console.log(res);
});
打印:
[{
"_id": {
"client": "clientX",
"date": "2017-04-20T00:00:00.000Z"},
"work": {
"_id":{ ┐
"client": "clientX", |
"project": 1}, | invariable
"title": "ABC", |
"description": "defgh"}, ┘
"hours": 4,
"description": "bored"
},{
"_id": {
"client": "clientY",
"date": "2017-04-15T00:00:00.000Z"},
"work": {
"_id":{ ┐
"client": "clientX", |
"project": 1}, | invariable
"title": "ABC", |
"description": "defgh"}, ┘
"hours": 8,
"description": "funny"
},{...etc...}
]
正如你可以看到,在所有返回的對象,在人口work
場是相同的目的。
但是,如果我刪除填充方法(tw.find().exec(...)
),我會得到原始work
字段,它們實際上是不同的。
我認爲貓鼬還沒有實施這種類型的人口。我如何將兩個模式聯繫起來以在查詢中獲取組合數據?
感謝您的回答,但我得到了同樣的結果。最後,我選擇在單獨的進程中選擇初始查詢中提到的所有Works,將它們逐個添加到HoursWorked(以舊式)。主要的問題是在一個需要關係數據庫的項目中選擇MongoDB(熱衷於新穎性)。 – Rodrigo
不客氣,但這應該工作。如果你不介意的話,你應該分享你的查詢。我測試了這個代碼。如果您願意,我可以添加測試數據。 – Veeram