Articles of mongodb

我如何插入并findMongoDB中的多个嵌套数组内的对象?

我有一个问题,试图在mongoDB我的mongoose模式中的多个嵌套数组中插入一个对象。 我有以下结构: { contries: [{ name: 'String', states: [{ name: 'String', cities: [{ name: 'String', regions: [{ name: 'String', habitants: [{ name: 'String', age: Number }, { name: 'String', age: Number } ] }] }] }] }] } 1 – 想象一下,我想在特定城市的特定区域内插入居住者,我如何构build查询? 2 – 如果收到整个json对象作为请求,我需要检查是否存在任何国家,城市,州或地区,如果它们都不存在,我需要创build并插入数组中的居民。 3 – 如果我只需要从特定城市的特定区域获得居民数组,我怎样才能使用投影算子来过滤? (我想mongo过滤,而不是应用程序)。 4(BONUS) – Habitants数组只包含一个居民对象的对象Id,只需要使用populate?

NodeJS:callback和asynchronous调用

我一直在盯着我的屏幕太久,似乎无法弄清楚这一点…基本上我做3查询使用mongoose,每一个build设在另一个的结果。 由于某种原因,家长电话会在孩子完成任务之前完成。 这是我的代码,为什么父母不等待继续直到孩子完成了工作? 我怎样才能让代码运行,因为我想要它:-) 我被告知使用承诺,但它看起来如此复杂的使用,我认为使用callback将足以处理asynchronous调用或我错了吗? var ctr = 0; // counter 1 var ct2 = 0; // counter 2 //Array to be used for the header of the csv file var mainArr = [["Personeelsnummer", "Chauffeur", "Week 1", "Week 2", "Week 3", "Week 4"]]; // Find all users in the database User.find({}).exec(function (err, users){ // forEach […]

防止字段在初始设置后更新

使用Mongoose或简单的MongoDB驱动程序,是否有办法locking字段从第一次设置后更新字段?

CRUD nodejs / express server:app.put req.body是空的

我刚刚写了一个基本的crud操作的超简单nodejs后端。 然而,在陈述声明中,我没有收到我的请求的正文: app.put('/note-update/:id', function (req, res) { var noteId = req.params.id; console.log(req.body) db.collection('notes').update({ _id: noteId }, req.body, (err, result) => { res.send( (err === null) ? { msg: req.body } : { msg: err } ); }); }); 这是我用ajax执行的调用: var note = { _id: "599e660cbc845b4e2952715f", name: "Genauer Detailbeschrieb", note: "Ey-10" } $.ajax({ type: 'PUT', url: […]

麻烦callback,错误捕获和MongoDB

我一直在研究一个允许我将公司添加到数据库的应用程序。 原来我的代码是纯意大利面,所以我想正确模块化。 为此,我添加了路线,一个控制器和一个道。 这就是我的代码现在的样子 路线 app.post('/loadcompanies', (req, res)=> { companiesController.loadcompany(req.body, (results)=>{ console.log(results); res.send(200, "working!"); }) }) 调节器 module.exports.loadCompany = (body, callback)=>{ companiesDao.loadCompany(body, callback); } 道 module.exports.loadCompany = (company, callback)=>{ MongoClient.connect(conexionString, (err, database) => { if (err) console.log(err); db = database; console.log(company); db.collection('companies').insert(company, (err, result)=>{ callback({message:"Succesfully loaded company", company:result}); }); }) } 我目前的担心是,模块化这样的错误工作是令人困惑的。 我试图添加一个try-catch的方法,如果有一个db插入和抛出和错误,但似乎并没有工作。 我试过的其他事情是在callback中返回错误,如下所示: if […]

如何在函数中查询MongoDB,在res.render中查询到ejs

我想查询Mongodb中的最后10个元素,并返回此查询中的元素,以呈现给index.ejs我尝试了很多方法,例如(callback,asyc函数),但我无法解决这个问题 function getlastelements(ID){ var MongoC = mongodb.MongoClient; var url = 'mongodb://localhost:27017/Weatherdb'; MongoC.connect(url, function(err,db){ var collection = db.collection('datas'); collection.find({"ID" : String(ID)}).sort({_id:-1}).limit(10),(function(err,cursor){ var xyz = cursor.toArray(); return(xyz.length); }) }); } console.log(getlastelements(1));

在nodejs中find来自mongoDB的多个项目

我想find多个项目的ID和项目的状态。 但每次我都得到错误。 Node.js代码: app.post('/product', function (req, res) { var collection = req.db.get('itemslist'); var id = req.body.id; var status = req.body.status; collection.findOne({id: id, status: status}, function(e, doc){ console.log(id, status); if (doc == true){ res.send('true'); } else { res.send('false'); } }); }); 我哪里错了?

将数据发布到mongoDb后如何获得id?

我正在使用node.js,angularjs和mongoDb。 我正在创build一个产品上传页面。 它分为两部分: 数据页面 :这部分将包含文本框和下拉菜单。 图片上传页面 :这个部分会有图片上传控件。 所以我想在同一页面创build2个表单,从第一页我将文本数据发布到mongoDb,返回新创build的产品的product_id ,然后上传带有返回的product_id的图像。 我开发了restFul API来发布产品api/products/create-product 。 产品型号 : { productName:{type: String}, productPrice:{type: Number} } 图像模型 : { productId:{type: String}, imagePaths:[{type: Array}] } 产品控制器(Angular): $scope.newProduct = function(){ var formData = new FormData; for(key in $scope.product){ formData.append(key, $scope.product[key]); } //getting the files var file = $('#file')[0].files[0]; formData.append('image', file); //Post data $http.post('http://localhost:3000/products/api/new-product',formData,{ […]

将数组索引匹配到提供的对象variables

我有这样的外部对象: var obj = { a: 2, b: 0, c: 1 } 此外,我有与引用obj字段“ref”的集合。 obj对象中的值被视为集合中的数组字段的索引。 { ref: "a", array: ["xyz", "abc", "def"] } { ref: "b", array: ["sde", "xda", "era"] } { ref: "c", array: ["wwe", "aea", "fre"] } 我想聚集收集只有一个取决于在obj中指定的索引值的数组。 .aggregate([ { $project: { code: $arrayElemAt: ["$array", { $let: { vars: { obj: obj }, in: […]

如何从条件输出中删除不需要的字段

我有一个投影阶段如下, { 'name': {$ifNull: [ '$invName', {} ]},, 'info.type': {$ifNull: [ '$invType', {} ]}, 'info.qty': {$ifNull: [ '$invQty', {} ]}, 'info.detailed.desc': {$ifNull: [ '$invDesc', {} ]} } 如果字段不存在,则投影为空对象( {} ),因为如果在字段中执行sorting并且该字段不存在,则该文档按sorting顺序排列( sorting文档不存在字段到结束结果 )。 下一个阶段是sorting,并希望不存在的字段sorting顺序最后。 这是按预期工作。 现在,我想删除那些有空对象作为值的字段(如果info.detailed.desc是空的info.detailed不应该在输出中)。 我可以使用像这样的lodash在节点级别lodash此操作( https://stackoverflow.com/a/38278831/6048928 )。 但我试图在MongoDB级别做到这一点。 可能吗? 我试过$redact ,但它是过滤掉整个文档。 是基于值的PRUNE或DESCEND字段的文件是可能的?