繁体   English   中英

Meteor Blaze 模板助手等待集合找到“SELECT DISTINCT”

[英]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/

https://docs.meteor.com/api/collections.html#sortspecifiers

http://blazejs.org/api/templates.html#Template-helpers

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM