![](/img/trans.png)
[英]Meteor Blaze helper and Mongo collection.find with Session key selector
[英]Meteor Blaze template helper wait for collection find to “SELECT DISTINCT”
此 Meteor 客户端代码需要按字段“类别”对 mongo 集合中的文档进行分组,并返回字段“类别”的唯一值的排序数组。 我正在使用 Blaze 模板助手,它返回一个由collection.find.foreach
填充的数组,因为我找不到简单易懂的示例来说明如何聚合客户端的 mongo 集合,如何让助手等到集合操作完成准备好? 谢谢
'jobs': function(){ let categories = [] Jobs.find({}).forEach((doc) => { if(.categories.includes(doc.category)) categories.push(doc.category) }) return categories.sort() }
更新:添加示例
集合 Jobs 的数据如下:
{'category':'Inspection','label':'Pink','discription':'R...} {'category':'Inspection','label':'Blue','discription':'U...} {'category':'Inspection','label':'AOR', 'discription':'A...} {'category':'Inspection','label':'Prep','discription':'P...} {'category':'Inspection','label':'Chec','discription':'I...} {'category':'Inspection','label':'Diag','discription':'D...} {'category':'Service','label':'basic','discription':'Cha...} {'category':'Service','label':'regular','discription':'C...}
我需要字段类别的唯一值,即(检查、服务)。
更新 2在 mongo shell 上,解决方案是: db.jobs.distinct( "category" )
产生 ["Inspection","Service"]
所有给定的代码都不需要 Mongo 的聚合 function 但可以通过普通查询功能解决:
if(.categories.includes(doc.category))
可以使用$in
运算符求解,而.sort()
可以使用sort
变换操作求解:
'jobs': function(){
return Jobs.find({ category: { $in: categories } }, { sort: { category: 1 } })
},
返回的值是Mongo.Cursor
,它将触发对更改的反应。
读数:
https://docs.mongodb.com/manual/tutorial/query-documents/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.