Articles of mongodb

在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字段的文件是可能的?

护照 – 本地 – mongoosechangePasswordfunction

我想要有用户可以更改密码的function。 我已经实现了这样一个路由( '/ resetPasswd' ): UserRouter.route('/resetPasswd') .post(function (req, res, next) { passport.authenticate('local', function (err, user, info) { user.changePassword(req.body.oldPassword, req.body.newPassword, function (err, user) { if (err) next(err); res.json('password changes successfully !'); }) })(req, res, next); }); 这是我发送的身体: { "oldpassword": "secret", "newPassword": "new" } 但是我得到这个错误作为回应: { "message": "user.changePassword is not a function", "error": {} } 这是我的模式的图片: 用户架构: […]

使用nodejs在mongodb中添加另一个图像path

我能够在mongodb中存储图像path。在这里我以图像格式存储图像path。 使用文档ID我需要添加另一个图像,即我想推入另一个图像path到该数组。所以我的问题是如何可以在mongodb中存储另一个图像path。 这里我使用htmlfile upload图片。 这是我的代码index.html <form id="uploadForm" enctype="multipart/form-data" action="/api/file" method="post" > <input type="file" name="userFile"/> <input type="submit" value="Upload File" name="submit"> </form> 这是我的服务器代码server.js var express=require('express'); var multer=require('multer'); var bodyParser = require('body-parser'); var Image=require('./models/image'); var Product=require('./models/product'); var mongoose=require('mongoose'); var path = require('path'); var rand; var urlencodedParser = bodyParser.urlencoded({ extended: false }); var config = require('./config'); mongoose.connect(config.mongoUrl); var db […]

在mongodb中通过binDatatypes上传小文件

我想通过BinDatatypes将大小小于16MB的小file upload到MongoDB ,我知道这是小文件的唯一默认选项,而GRIDFS理想地用于超过16MB的文件。 不幸的是,我不能轻易得到正确的文档和上传文件的例子,没有在MongoDB文档上的GridFS。 我发现有关BinDatatypes的信息要么非常有限,要么我不明白。 通过几个类似的问题(主要是基于python的)和其他地方,我对BinData的使用有了一些想法,但仍然无法以这种方式成功上传文件。 我需要通过BinData上传文件的更多信息,特别是正确的方式来初始化,因为我通常得到的BinData not a function或BinData is not defined错误。 以下是我正在testingfunction的当前代码: import { Meteor } from "meteor/meteor"; import { Mongo } from "meteor/mongo"; export const Attachment = new Mongo.Collection("attachment"); let BinData = Mongo.BinData; //wrong initialisation function createAttachment(fileData) { const data = new Buffer(fileData, "base64"); Attachment.insert({file: new BinData(0, data)}); } 一些有用的链接: 蒙大的BSONtypes BSON规格

Mongoose:如何更新从variables索引数组中的值?

options.votes是一个数组。 此代码工作: Poll.findOneAndUpdate({title},{$inc:{'options.votes.0':1}} 我需要replace一个variables为0。 这不起作用: const query = 'options.votes.'+variable Poll.findOneAndUpdate({title},{$inc:{query:1}} 感谢帮助

如何用Nodejs实现对MongoDB数据库的并行插入操作

我正在开发一个大量的项目导入到数据库的代码段。 在Excel文件中的总logging是24103.而由于大规模的validation,最初的40分钟总共需要input700行logging。 现在,在减less战略步骤之后,所有logging的时间减less到24分钟。 现在有四项活动可以并行独立执行。 那些我尝试通过async.parallel过程并行执行的活动。 但是当我看到控制台进行debugging的时候,我才知道它仍然能够以一种方式在一条logging中执行这些操作。 只是不同之处在于正在插入的logging的洗牌。 在所有的执行完成之后,与之前所执行的活动顺序进行的时间相同。 什么可能是另一种可能的方式来执行(插入)并行的方式。 我的步骤包括 flowController.on('START', function () { // Uploading and storing the binary data as excel file }); flowController.on('1', function () { // Validation to check if file contain required sheet with name and all and convert the file into JSON format }); flowController.on('2', function () { // […]

Node.js MongoDB查找所有_id

我想这样做,在mongo控制台中工作正常 > db.user.find({"_id": {$in: [ObjectId("55efa50a6f002c766e8b4571") ,ObjectId("56e9cc2d6f002ccf028b4567")]}}); 在NodeJs中,但这不起作用: user_collection.find({"_id":{$in: [new ObjectId("55efa50a6f002c766e8b4571"), new ObjectId("56e9cc2d6f002ccf028b4567")]} })…. 我正在使用本地mongodb驱动程序 var MongoClient = require('mongodb').MongoClient; var dbConfig = config.get('Autenthication.dbConfig'); var ObjectId = require('mongodb').ObjectID; MongoClient.connect(dbConfig.url, function (err, db) { var user_collection = db.collection('user'); user_collection.find({"_id":{$in: [new ObjectId("55efa50a6f002c766e8b4571")]} }, {_id:true, name:true, email:true ,emailAccount:true, idFacebook:true}).each(function(err, user) { //code code code }); }); [new ObjectId("55efa50a6f002c766e8b4571")]就是例子