Mongodb自动将信息聚合到新集合中?

时间:2017-07-13 17:26:50

标签: angularjs node.js mongodb

我正在试图找出实现这一目标的最佳方法。

如果我的mongodb中有一个大型集合,其中包含我仓库的所有“库存”信息,而不考虑库存的特定“类型”,那么将数据连续聚合到自己的集合中的最佳方法是什么? **事后添加了这个信息:我正在使用Mean堆栈,所以也许有些这样做更好的只是在服务器端使用角度函数而不是实际保持集合更新?

例如,我当前的“库存”集合将包含诸如

之类的项目
  • _id:something,name:item1,type:chemical,vendor:something,safetycode:####,machineUse:n / a,equipmentUse:n / a ...
  • _id:something2,name:item2,type:machine,vendor:something2 safetycode:n / a,machineUse:“digging”,equipmentUse:n / a ...
  • _id:something3,name:item3,type:equipment,vendor:something3 safetycode:n / a,machineUse:n / a,equipmentUse:“Computer”...

我倾向于$ group,但这是保持'SEPERATE'系列与各自团队更新的最佳做法吗?您将在下面注意到,聚合函数应该收集特定的“类型”(化学,机器,设备等......)并存储每个项目的所有详细信息,这些字段仅用于“类型” (即,化学品使用'安全码',机器不要使用安全代码,因此它被省略,而是'machineUse'存储,等等。)

 db.invfulls.aggregate([
    { "$group": {
                "_id": "$itype",
                "total": {$sum : 1},
                "items":{
                    "$push":{
                        "$cond":{ 
                            "if": {"$eq":["$itype","Chemical"]}, 
                            "then": {"id":"$_id", "name":"$name", "vendor":"$vendor", "review":"$needsreview"},
                            "else": {"id":"$_id", "name":"$name", "vendor":"$vendor"}
                        }
                        }
  }
  }},
    {$out: "invByType"}
])

此外,我是否必须在数据库中将其作为一个函数,并在有新的“帖子”的时候调用该函数?

我已经阅读了一些关于mapReduce的内容,但是我读到的所有内容都说它非常慢并且不应该使用?

0 个答案:

没有答案