Tag: mongodb

将新的mongoose中间件前提条件应用于集合中所有已有的元素

恐怕我已经知道了答案,但我会问。 在mongoose,我只是增加了一个现有的模式的前提条件。 此条件基本上连接对象中所有元素的值,创build一个散列并将其作为另一个字段存储在同一个对象中。 这段代码将从现在开始保存的所有元素上执行,但是我想知道是否可以对所有现有的元素执行它,或者如果我必须编写一个脚本来更新它们。 谢谢!

meteor比较集合中的embedded式数组

我有三个集合: UserCollection , DepartmentCollection和QuestionsCollection QuestionsCollection是一个可configuration的问题列表。 用户和部门各自回答从QuestionsCollection生成的调查,结果每个都有embedded的questionAnswer对象数组,每个对象都有一个questionid和一个answer属性。 UserCollection中的用户文档示例如下: { id:SoEtnNvN8B3QYcd3N, questionAnswers:[ { questionId: 1, answer: "melbourne" }, { questionId: 2, answer: "10"}] } } 部门将具有相同的embedded式数组,但可以包含更多或更less的questionAnswer对象。 当然有不同的或相同的答案。 问题: 我想要做的是能够得到一个单一的用户questionAnswers数组作为search条件,并看看有多less部门匹配这些questionAnswers。 匹配将在两个属性上匹配,并且用户必须回答部门已经回答的相同问题以匹配例如 如果部门回答了比用户更多的问题,那么它自动不会匹配。 如果用户和部门回答相同数量的问题,则所有questionAnswer值应匹配。 如果用户回答了比部门更多的问题,则所有的部门questionAnswers必须包含在用户questionAnswers内。 答案是完全匹配,但我可能需要某种机制来进行范围search。 我已经看了可能build立一个使用用户questionAnswers数组查询和使用$ elemMatchsearchDepartmentCollection,但我不知道如何实现这一点。 任何帮助或方向将不胜感激。

MongoSkin错误的插入

我有一个与以下结构的国家arrays: { "code": "ZW", "name": "Zimbabwe", "zipPattern": "[\\s\\S]*", "states": [ { "name": "Bulawayo" }, { "name": "Harare" }, { "name": "Manicaland" }, { "name": "Mashonaland Central" }, { "name": "Mashonaland East" }, { "name": "Mashonaland West" }, { "name": "Masvingo" }, { "name": "Matabeleland North" }, { "name": "Matabeleland South" }, { "name": "Midlands" } […]

我如何使用Meteor简单模式与meteor页面

刚开始玩meteor,我正在寻找meteor-simple-schema与meteor-pages工作 原理很简单,我只是玩他们提供的示例todos应用程序,并希望添加无限滚动来加载更多的待办事项。 但是我不能同时工作。 这是我的默认meteor-simple-schema Todos = new Meteor.Collection('todos', {}); Schema = {}; Todos.attachSchema(new SimpleSchema({ text: { type: String, label: "Name", max: 200, min: 2 }, createdAt: { type: Date, label: "Created", optional: false }, creatorId: { type: String, label: "Creator", optional: false }, done: { type: Boolean, defaultValue: false, label: "Done?", optional: true } })); […]

Mongoose索引后的Mongo数据库修复名称?

Mongoose与Node和Mongo数据库交互的方式,我有一个非常奇怪的问题。 我使用express来创build一个基本的get apipath来从我的mongodb中获取一些数据。 我有一个名为testing的数据库,它有一个集合电话“billings” 所以架构和路由是非常基本的 apiRouter.route( '/计费/') .get(function(req, res) { Billing.find(function(err, billings) { if (err) res.send(err); // return the bills res.json(billings); }); }); “帐单”是我的mongoose模式。 只有1个对象{test:string} 这工作得很好,我得到了我所有的项目在我的名为“比林斯”,这是只有一个项目{testing:“成功”}的所有项目的回应 接下来我创build了一个名为“历史”的集合 我设置了与我的帐单完全相同的设置。 apiRouter.route( '/ historys /') // get all the history .get(function(req, res) { Historys.find(function(err, historys) { if (err) res.send(err); // return the history res.json(historys); }); }); 再一次“历史”是我的mongoose模式。 这个模式与我的账单设置是一样的,因为我没有任何真实的数据,字段是相同的,我只是用testing字段,所以从billings和历史回报json对象应该已经 […]

显示Mongoose模型的多个validation错误

如果我有这个模式: var userSchema = Schema( {name : { type: String } }); userSchema.path('name').validate(function(value) { return value.length > 4; }, 'Name is too short'); userSchema.path('name').validate(function(value) { return hasNoNumbers(value); }, 'Name cannot have numbers'); var User = mongoose.model('User', userSchema); 然后我创build一个这样的模型并运行validation函数: var newUser = new User({name: '1da'}); newUser.validate(function(err) { console.log(err.errors.name); }) 这只logging第一个错误消息“名称太短”。 但是,名称属性不符合validation要求。 有没有办法显示这两个错误信息? 谢谢

mongodbstream查询与through2.spy结束不被调用

我有一个来自mongo的stream式查询,我正在将它传输到一个通过“间谍”可写入stream。 它完全包含了5个文档的小集合的“结束”callback。 但是,如果收集了大量的344个文件,只有前15个文件才能通过,那么这个文件永远挂起来,而“结束”事件永远不会发生。 这是一个MCVE: var spy = require("through2-spy").obj; var MongoClient = require("mongodb").MongoClient; function getStream() { var stream = spy(function() { console.log("@bug counting", stream.total++); }); stream.total = 0; return stream; } function onEnd() { console.log("ended"); } MongoClient.connect(process.argv[2], function(error, db) { if (error) { console.error(error); return; } var stream = db.collection(process.argv[3]).find().stream(); stream // behavior is the same […]

Node.js和Mongodb安全+encryption选项的源代码

我打开这个线程,因为我很难决定我的项目有一些问题。 问题是: encryption源代码文件(不是混淆,需要可以运行的encryption)。 encryption存储在mongodb中的文档,主要是用户名和密码。 Mongodblogin – 是否可以要求用户名和密码打开连接到服务器? 一点信息:我的项目将被安装在客户服务器上,所以代码不可见并希望不可破解(最低安全性)是非常重要的。 1 – 对于第一个项目,我find了JXCORE,看起来很有前途,但是我找不到在生产中使用它的用户的certificate或评论。 任何人可以推荐其他方法? 或者如果任何人都可以查看我列出的选项,我会appriciate它。 2 – 为了encryption,我想使用AES256,我发现图书馆的crypto-js能够满足要求。 不幸的是,它不提供node.js的帮助(我找不到)。 例如,当我运行这个代码,我想看到encryption和解密的项目: var AES = require("crypto-js/aes"); var temp = AES.encrypt("Message", "secret password").ciphertext.toString(); console.log(temp); console.log(AES.decrypt(temp, "secret password")); 只显示encryption的密文,不知道如何访问解密的文本。 在旁边注意 ,有没有人推荐使用SHA3与AES256结合? 什么是确保用户名和密码mongodb DB的build议方法? 如果您在node.js中获得了crypto-js的文档链接或有用的教程,请在评论中链接。 我的JS技能不是专业人士,所以它可能在那里,我看不到它,所以如果这是一个noob线程道歉。 谢谢。

Elasticsearch和具有nodejs的MongoDB

在使用mongodb和nodejs进行elasticsearch时,我正在使用mongoosastic和elmongo模块。 这些工作非常好。 但是我只想知道在节点模块上使用mongo-river插件的优点。 使用河stream时是否需要使用副本? 提前致谢

如何将对象数组设置回从MongoDB中的嵌套find()迭代的集合?

我使用AngularJS,NodeJS和MongoDB开发应用程序。 我想加载产品,从ProductCategoryCode分类从AngualrJS发送到NodeJS。 首先,我需要通过ProductCategoryCode查找产品,然后遍历每个产品,以通过UomCode和ContainUomCodefindUoms,每个产品都应该有2个uom。 如何将uom对象docUom设置回产品文档doc[i]并更新到产品集合doc ? 对于下面的代码行 doc[i].Uom = docUom; 系统抛出错误不能设置未定义的属性“Uom”。 这里是product.js代码片断。 router.get("/LoadProductByProductCategoryCode/:productCategoryCode", function (req, res) { console.log('user.js -> /users '); var productCategoryCode = req.params.productCategoryCode; console.log(productCategoryCode ); var MongoClient = require('mongodb').MongoClient, format = require('util').format; MongoClient.connect('mongodb://localhost:27017/NodeDB', function (err, db) { if (err) throw err; var query = { ProductCategoryCode : productCategoryCode} var new_product = []; findProduct(db, query, […]