对不起,如果标题本身是矛盾:) JS初学者在这里..
我得到一个MongoDB文档数组,我想用另一个对象(从另一个表)扩展每个文件,以便我可以将这个扩展对象数组传递给我的视图。我希望实现这样的目标:
import csv
def dict_to_csv(scraped_values_dict):
my_dict = scraped_values_dict
with open('mycsvfile.csv', 'a') as f:
w = csv.DictWriter(f, my_dict.keys())
if f.tell() == 0:
w.writeheader()
w.writerow(my_dict)
else:
w.writerow(my_dict)
我认为这不是JavaScript的方式:)所以我该如何实现呢?
谢谢,
答案 0 :(得分:2)
使用聚合框架中的 $lookup
函数。以下示例演示了如何在您的情况下应用它:
exports.myFunction = function(req, res) {
Book.aggregate([
{ "$match": { "good": true } },
{
"$lookup": {
"from": "authors"
"localField": "author_id",
"foreignField": "_id",
"as": "author"
}
},
{ "$unwind": "author" }
]).exec(function(err, docs) {
res.render('/books.ejs', {books: docs});
});
}
答案 1 :(得分:1)
我找到了另一个使用populate的解决方案。
为此,我需要更改我的Book模型,
发件人:强>
var mongoose = require('mongoose');
var Author = require('./author.js'); // added this
var bookSchema = mongoose.Schema({
author: { type: mongoose.Schema.Types.ObjectId, ref: 'Author' },
good: Boolean
});
以强>
populate()
我将exports.myFunction = function(req, res) {
Book.find({'good': true}).populate('author').exec(function(err, docs) { // find good books
// render books:
res.render('/books.ejs', {books: docs});
});
}
链接到我的初始查询,如下所示:
$percentile_50 = $array[round((50/100) * $count_array -.5)];