草庐IT

管道化

全部标签

mongodb - 在 mongodb 聚合管道中创建价格范围方面

我的文档结构是这样的{title:'aproduct',price:10}我想做的是一个动态的价格范围方面,看起来像这样[{facet:'0-30',count:5},{facet:'30-100',count:40}]显然会有一个固定间隔,例如50。我曾经让ElasticSearch使用直方图函数为我执行此操作,但我无法在mongo中使用它。我想,可以做一个mapreduce来完成它,但我想知道是否有一种方法可以添加到我的聚合管道中。 最佳答案 您可以尝试一个聚合管道,您可以在其中使用$cond投影facet字段运算符(opera

python - MongoDB 中是否有等效的 redis 命令管道?

我正在使用mongodb作为存储的Web应用程序中调试一个慢速API端点。原来请求向MongoDB发送了8个不同的查询,并将数据组合在一起返回。MongoDB位于另一台主机上,因此该请求涉及8次往返。这8个请求之间没有任何依赖关系,所以如果我可以批量或并行发送这8个查询,可以节省很多时间。我想知道Mongo是否支持类似Redis的管道,或者发送一个脚本(比如Redis中的lua脚本)来获取数据,这样我就可以一次性获取所有数据?如果没有,有没有办法并行发送查询?(该应用程序基于python/tornado/pymongo) 最佳答案

MongoDB 聚合管道组

我正在尝试构建一个管道,该管道将根据特定条件搜索文档并将对特定字段进行分组以提供所需的输出。deals的文档结构是{"_id":"123","status":"New","deal_amount":"5200","deal_date":"2018-03-05","data_source":"API","deal_type":"NewBusiness","account_id":"A1"},{"_id":"456","status":"New","deal_amount":"770","deal_date":"2018-02-11","data_source":"API","deal_t

mongodb - 在 $sort 聚合管道之后向文档添加字段,该管道使用 MongoDb 聚合将其索引包含在排序列表中

我想在$sort聚合管道之后从列表中获取某些用户的顺序。假设我们有一个排行榜,我需要通过一个仅获取我的数据的查询来获取我在排行榜中的排名。我尝试了$addFields和一些使用$map的查询假设我们有这些文件/*1createdAt:8/18/2019,4:42:41PM*/{"_id":ObjectId("5d5963e1c6c93b2da849f067"),"name":"x4","points":69},/*2createdAt:8/18/2019,4:42:41PM*/{"_id":ObjectId("5d5963e1c6c93b2da849f07b"),"name":"x24

聚合管道期间的 MongoDB String 到 Double 转换

在我的文档中,十进制值存储为String(因为我在Java中将BigDecimal转换为String)。当我一次查看一个文档时,这是完全可以的并且是必需的。但是,我要求在聚合期间将它们视为Double(例如,$sum)。有没有一种方法可以让我在聚合管道期间的$project操作(或其他方式)期间将String转换为Double。这样我的后续管道将在Double字段上执行$sum。我不考虑将它们存储为Double的选项,因为我需要保留每个文档的精度,但如果在聚合操作期间精度丢失,我可以接受。 最佳答案 您可以使用$toDouble,本

node.js - 可选 $match 管道运算符的 Mongodb 聚合追加方法

我在mongodb2.6中使用nodejs+mongoosejs。我在模型上有一个静态函数,该函数对集合中所有项目的值求和。每个项目都使用projectNo属性分配给一个项目。我需要静态函数能够为我提供集合的总数,如果传递了projectNo参数,则将$match管道运算符添加到聚合中。这将使我不必制作2个本质上做同样事情的静态函数。为了让事情更有趣一点,我使用bluebirdpromisifyAll方法让聚合框架返回一个promise。我对整个集合求和的静态函数:db.collection.aggregateAsync([{$group:{_id:null,金额:{$sum:"$am

mongodb - 如何在 Mongodb 聚合管道中包含其他字段?

我有一个转推集合,我想显示谁转推最多。这是示例数据。{"_id":ObjectId("55cf3400dd232e1b561b6b2c"),...."user":{"id":1.77202e+08,..."screen_name":"Karunaprof",},...},{...}所以每个文档都是一个转推。我可以汇总哪些用户转推最多,但它只返回_id我希望结果也返回screen_name。这是我的查询。db.getCollection('raw_tweets').aggregate({$group:{_id:"$user.id_str",count:{$sum:1}}},{$match

java - 为什么 Spring Data MongoDB 拒绝聚合管道中包含 $ 的字段名称?

使用SpringData的ProjectionOperation类在MongoDB上创建聚合查询时,使用带有“$”的字段(例如“test$')字符导致IllegalArgumentException验证springdatamongodb源,我注意到在AggregationField类的构造函数中执行了字段名称的清理。Fields.javaClassprivatestaticStringcleanUp(Stringsource){if(Aggregation.SystemVariable.isReferingToSystemVariable(source)){returnsource;}

c# - 如何创建包含 $redact 的 c# mongodb 管道

我正在尝试使用C#驱动程序创建一个mongodb聚合管道,其中包括redact和一个项目。我已经尝试了下面显示的几种方法,但在每种情况下都只执行管道的第一阶段。AppendStage似乎没有追加下一阶段。那么如何在使用C#mongodb驱动程序的项目之后进行编辑。请注意,流畅的界面不直接支持编辑,但另一篇文章显示使用下面的代码来完成它,这适用于第一阶段。我使用的是2.4.3版本的C#驱动和mongodb3.4.4版本stringredactJson=System.IO.File.ReadAllText(@"redactTest.json");stringprojectJson=Syst

javascript - 有条件地包括聚合管道阶段

我有一个函数可以根据给定的参数给我一些订单。但是,参数可以为空,在那种情况下我想单独留下$match。这是我目前拥有的代码:if(req.query.status&&typeof(req.query.status)=='array'){varmatch={$in:req.query.status};}elseif(req.query.status){varmatch=req.query.status;}else{//whenemptyfindallstatusesvarmatch=null;}Order.aggregate({$match:{'shop.nameSlug':req.qu