我正在尝试在 MongoDB 中创建视图以避免不必要的回报。在文档中说聚合函数可以使用带有双美元符号的变量,考虑到这一点,我创建了一个视图,在这个示例中应该使用一个变量来过滤 customerIds 并将结果分组以总结不同文档的付款。
例子:
db.createView(
"viewName",
"myCollection",
[{
$match: { "customerId": "$$customerId", }
},{
$group: {
_id: null,
total: "$amount",
}
}]
)
Run Code Online (Sandbox Code Playgroud)
视图创建正常,如果我在聚合函数中放置了一些有效的 customerId 可以正常工作,但我不知道如何执行视图并传递customerID我需要的。
有任何想法吗?在这种情况下,mongodb 文档对我没有帮助,我真的需要将其创建为视图,因为有许多应用程序将连接到此视图。
我试过: db.viewName.find({customerId: "some valid id"});
您可以像访问集合一样访问它,例如我正在通过以下方式创建视图:
db.runCommand({
create: 'AuthorsView',
viewOn: 'authors',
pipeline: [{
"$group": {
"_id": "$email",
"count": {
"$sum": 1
}
}
}]
})
Run Code Online (Sandbox Code Playgroud)
由于这是现在的现有视图,我可以简单地执行以下操作:
db.getCollection('AuthorsView').find({})
Run Code Online (Sandbox Code Playgroud)
查看所有文档或向其中添加更多参数find
不确定传递变量是什么意思,因为视图就像集合一样......您可以通过find&对它们运行查询aggregate。