Tag: mongodb

将查询与插入查询相结合

我觉得这是没有捷径,但仍然想检查。 说我有一个看起来像这样的集合 [{ userName: "Mr. A" income: 100 expense: null finalBalance: 200 timestamp: Date.now() }] *如果我们有收入金额,费用为零,反之亦然最终余额=(收入总和) – (费用总和)堆栈:mongodB + node.js 基本上需要知道在集合中插入新对象的最短和最好的方式,每次都要计算新的“finalBalance”。 当然,我每次都要插入一个像上面显示的新事务。 我使用“时间戳”和“用户名”为该用户获取最后一次转换,然后添加或减去收入或费用金额并创build新对象并插入。 例如: 用户的最后交易: { userName: "Mr. A" income: 100 expense: null finalBalance: 200 timestamp: Date.now() } 需要为用户插入新的交易细节 ({userName: "Mr. A", expense: 10}) 步骤1:(从数据库中获取)从数据库中获取用户的最后一笔交易,获得最后一笔“最终余额”。 步骤2:从“finalBalance”中减去“费用”金额以获得新的“finalBalance”,其将为(200-10 = 190) 步骤3 :(插入数据库)插入 { userName: "Mr. A" income: […]

最好的方法来包装mongoosevalidation错误

我们知道mongoose为我们提供了一个简单的方法来进行validation。 但是,假设你使用express + mongoose来构build一个微服务; 和一些客户端(可能是networking应用程序,手机应用程序等)需要消耗它。 通常,我更喜欢用简单的错误代码和消息来回应JSON。 在大多数情况下,客户可以根据他们向用户显示哪种语言来创build自己的消息。 默认情况下,如果我们从mongoose捕获错误,我们可以得到JSON响应,如: JSON响应 { "errors": { "price": { "message": "Path `price` (-1) is less than minimum allowed value (0).", "name": "ValidatorError", "properties": { "min": 0, "type": "min", "message": "Path `{PATH}` ({VALUE}) is less than minimum allowed value (0).", "path": "price", "value": -1 }, "kind": "min", "path": "price", "value": -1, […]

如何使用mongoose和asynchronous瀑布模型在MongoDb中存储数据

你好我是新的节点,我想保存数据在mongoose。 问题是有3个collections单位,build筑和部分。 build筑图是: var buildingsSchema=new Schema({ buildingname:String, status:String }); 部分模式是: var sectionsSchema=new Schema({ section_type:String, buildings:{ type: Schema.Types.ObjectId, ref: 'buildings' }, status:String }); 单位的架构是: var unitsSchema=new Schema({ unit_type:String, unit_num:String, unit_ac_num:Number, buildings:{ type: Schema.Types.ObjectId, ref: 'buildings' }, sections:{ type: Schema.Types.ObjectId, ref: 'sections' }, shares:Number }); 在部分有一个build筑物的身份证和在单位有build筑物和部分的身份证 现在我已经使用xlsx插件将上传的Excel文件转换为json: var wb = XLSX.readFile("uploads/xls/" + req.file.filename); data = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], {header:1}); […]

如何使用聚合函数来计算mongoDB中的唯一数据

这是input的JSON数据这样存储在mongoDB中 input [{ 'name' : 'user1', 'date' : '23/09/2017', 'deviceType' : 'Android' }, { 'name' : 'user2', 'date' : '24/09/2017', 'deviceType' :'ios' }, { 'name' : 'user1', 'date' : '23/09/2017', 'deviceType' :'ios' }, { 'name' : 'user2', 'date' : '23/09/2017', 'deviceType' :'ios' }, { 'name' : 'user1', 'date' : '24/09/2017', 'deviceType' :'ios' }, { 'name' […]

将mongodb与云托pipe的elasticsearch整合在一起

我有一个云托pipe的mongo数据库,也是一个云托pipe的elasticsearch实例。 mongoDB早于ES。 ElasticSearch是我正在尝试configuration的。 我读过mongo-connector是做这件事的方法之一,但是这需要运行一个python服务。 我正在使用Heroku的API。 这是否意味着我需要为mongo连接器启动一个python dyno? 另外,是否有任何node.js连接器,我可以集成到我的API代码库? 我将根据执行简单性和稳健性之间的平衡来select最佳答案。 答案可以解决我所问的两个问题中的任何一个,因为它们都为我解决同样的问题。

MongoDB集合上的Mongoose模型不提取数据

我正在使用MongoDB 3.4.7版本,Mongoose 4.11.13驱动程序在MongoDB集合上创build模型,并创buildAggregationCursor来单独处理每个文档以填充一些JSvariables。 但似乎Mongoose模型没有将任何数据从MongoDB集合中带入游标。 我以前用mongodb驱动尝试过集合操作,但是不起作用(在这里检查) ,而是select了mongoose 。 但是这里似乎还有一些问题,或者我在这里丢失了什么? 为了更好的理解,更新了我的AggregationCursor。 任何快速的帮助将不胜感激。 节点版本3.10.10,ExpressJS 3.2.6 我的Node.JS代码如下: app.get('/reviews',function(req,res) { res.render("chart"); var obj = {}; var mongoose = require('mongoose'); var assert = require('assert'); var schema = new mongoose.Schema({ seller_id: String, product_id: String, product_desc: String, reviews: { total_review_count: Number, five_star_count: Number, four_star_count: Number, three_star_count: Number, two_star_count: Number, one_star_count: Number } }); […]

遍历MongoDB集合集合

我正在使用MongoDB版本3.4.7,节点版本3.10.10,ExpressJS 3.2.6 我想创buildAggregationCursor,然后遍历每个文件分别填充一些JSvariables。 我尝试采用类似的方法,作为在聚合中迭代Mongodb游标的答案 我的代码可以在MongoDB模型上的MongoDB模型中看到没有数据 我最初尝试与mongodb驱动程序,但它不起作用(检查链接在这里) ,而不是selectmongoose。 但是Mongoose模型似乎没有从MongoDB集合中获取数据。 由于它是这样一个基本的聚合要求(做一些聚合,然后迭代聚合游标来一次处理每个文档),我想知道什么可能是实现这种情况的最佳做法? 期待与具有洞察力的代码片段的build议

Mongodb聚合大集合

所以我有一个大集合存储消息,我想从这个集合产生时间序列数据。 现在,我有时间序列数据问题之前,当我有1000万条logging按时间间隔分组和计数/平均值。 Timestamp => values 我通过把所有的数据都放到一个集合中来解决这个问题,所以现在我只有更less的文档,更大的文档。 这有助于减less分贝需要查找相关文档的查找和search时间。 然而,我不知道我怎么能加快我的查询文件,而不是时间序列。 另外我想在这个大文件中search文本,所以我必须寻求所有文件没有exepction。 正如我所说我将邮件存储在单个文档中,模式如下所示: Id: string Author: string MessageType: string, Group: string, Message: string Votes: number Date: date 我想要统计消息中包含单词的所有logging或包含作者Joe的所有logging。 或者总结票等。 所以我最终会得到可以放在图表上的时间序列数据。 现在,如果我必须经历一年约5000万条logging的数据。 查询是gona永远采取,因为它必须获取这么多的logging,并筛选出我感兴趣的。 我怎么能取得更好的performance? 我只在date和作者字段设置索引。 然而,我的查询很慢,数据库超级忙处理一个查询。 我应该预先汇总我的数据,什么是一个好方法? 或者在后台工作人员中生成时间序列数据? 有人可以指导我正确的方式,所以我可以实现一个适当的解决scheme,可以减less数据库的负载,或增加查询性能? 处理这样一个包含消息的大集合的最佳实践是什么? 我怎么能细分这种数据? 在多台机器之间build立一个副本集并分割数据库会是一个好主意吗? 任何帮助和投入将被appriciated。

如何在MongoDB中更新嵌套数组

假设我们收集了以下数据 { "_id" : ObjectId("59d1f9f366e0852538645961"), "agentId" : ObjectId("59d1f9f366e0852538645960"), "level" : 1, "totalCommission" : 0, "createDate" : "Mon Oct 02 2017 14:03:55 GMT+0530 (India Standard Time)", "work" : [ { "commission" : [], "project" : {}, "enquiry" : { "createDate" : ISODate("2017-10-02T13:17:31.907Z"), "quarter" : { "_id" : ObjectId("59d21e2f5fa00a1734d9f847"), "type" : "4", "startMonth" : "October", "endMonth" : […]

在Mongoose(MongoDB,Node.JS,express)中的对象中创build对象后复制对象

我创build了一个循环来向不同地区添加产品(包含数据)。 首先,我想将所有产品添加到所有地区。 然后,我将(在不同的操作)从这些地区删除产品。 该网站的前提是,对象将能够被一个地区的用户保留,这将使该对象在该地区不可用,但在其他地区仍然可用。 我在注册时保存用户区域,只允许他们查看其区域中可用的对象。 我创build了名为Regions的对象,并将每个产品添加到区域内的数组。 我将它们存储在区域内的原因是未来我期待数以百计的不同产品,并且相信只要返回区域数组中的所有项目在服务器上比在每个产品中单独检查一个数值容易得多。 我的问题是 当运行我的代码,我得到我的网页内的每个对象的重复。 我使用的代码是: dummyregions.forEach(function(seed){ Region.create(seed, function(err, region){ if(err){ console.log(err); } else { dummyproducts.forEach(function(seedprod){ Product.create(seedprod, function(err, product){ if(err){ console.log(err); } else { region.products.push(product); region.save(); } }); }); } }) }); dummyRegions是一个对象,包含名称“string”和数组= [] dummyproducts包含名称“string”,类别“string”和缩略图图片url“string” 我只有4个虚拟产品和3个地区的testing项目,但这是我得到的结果: 每个地区的重复项目 任何帮助将非常感激!