Articles of mongodb

如何使用mongoose和nodejs删除模型中的项目id

这是我的模式 var purchaseOrderModel = function () { var itemSchema = mongoose.Schema({ strBarCode: {type: String }, strItemName: {type: String }, strQuantity: {type: String } }); var purchaseOrderSchema = mongoose.Schema({ strSupplierID: {type: String, required: true }, strInvoiceNo: {type: String,required: true }, dteInvoiceDate: {type: Date, required: true }, items: [itemSchema], created_by: { type: mongoose.Schema.Types.ObjectId, ref: 'user' } }); […]

如何正确地删除MongoDB中的孤立参考?

所以,我正在Node中构build一个类似博客的小型项目,并且遇到了孤立数据库引用的问题。 我有两个模型在单独的文件,相互引用。 这是我的模特: // ./models/user Var UserSchema = mongoose.Schema({ name: String, posts: [{type: mongoose.SchemaTypes.ObjectId, ref:'Post'}] }); // ./models/post var PostSchema = mongoose.Schema({ title:String, post_body: String, posted_by: mongoose.SchemaTypes.ObjectId }); 我的问题是,当你删除说,一个职位,你将如何删除用户的数组中的引用? 我的想法是我可以创build一个中间件在删除path之前运行,并删除用户的数组中的引用,然后再实际删除该post。 这会被认为是最好的方式吗? 我在Stack中发现了一个post,在这个模式中使用了'pre'函数: // ./models/post PostSchema.pre('remove', function(next){ this.model('User').remove({posts: this._id}, next); }); 这里是实际的post: 在MongoDB中删除时自动删除引用对象 。 虽然我无法得到这个工作。 但是我做了一个自定义的中间件来删除引用,但是觉得这可能不是最佳实践。 任何提示/build议将不胜感激。 谢谢!

从mongoDB中存储收集结果到Node中

我是新来的节点,我已经成功地从mongoDB读取数据。 但是我想将Collection中的全部数据存储到nodejs中的一个variables中,因为我想在索引页中使用它们。 我不知道如何存储它。 // Connection URL var url = 'mongodb://localhost:27017/test'; // Use connect method to connect to the Server MongoClient.connect(url, function (err, db) { assert.equal(null, err); console.log("Connected correctly to server"); seriescollection = db.collection('series'); }); var findseries = function (db, callback) { var cursor = db.collection('series').find(); cursor.each(function (err, doc) { assert.equal(err, null); if (doc != null) […]

如何根据条件设置Mongoose模式的默认属性的值

我有这个mongoose模式: var UserSchema = new Schema({ "name":String, "gender":String, }); 我想添加另一个名为image的字段。 如果性别是male ,则此图像将具有默认值,如果性别是male ,则将具有另一个默认值。 我发现默认值可以设置为: image: { type: ObjectId, default: "" } 但我不知道如何设定条件。

在mongodb shell和node.js中的相同查询的行为是不同的

为什么发生这种情况? 这种差异是否有合理的解释? 例如,我有一个数据库结构为; { id: "1" category: { name: "name1" groups: [ { groupName : "groupName1" title: "" }, { groupName : "groupName2" title: "" } ] } } 查询如下; db.collection.aggregate({$unwind:"$category.groups"}, {$match:{"category.groups.groupName": "groupName2", "category.name" : "name1"}}) 在mongo shell中它返回为; { id: "1" category: { name: "name1" groups: [ groupName : "groupName2" title: "" ] } } […]

用mongodb更新多个文档

如何迭代一个对象数组来使用mongodb更新文档,并保留修改后的文档返回到响应中 注意代码中的注释 .put(function (req, res) { var data = req.body.data; var documents = []; for (var item in data) { var id = data[item]._id; var document = data[item]; Item.update({ _id: id }, document, { overwrite: true }, function (err, item) { if (err) { res.send({'error':'Error'}); } Item.findById(id, function (err, document) { if (err) { res.send({}); […]

连接ECONNREFUSED 127.0.0.1:27017'

我有这样的代码: var express = require('express'), stylus = require('stylus'), logger = require('morgan'), bodyParser = require('body-parser'), mongoose = require('mongoose'); var env = process.env.NODE_ENV = process.env.NODE_ENV || 'development'; var app = express(); function compile(str, path){ return stylus(str).set('filename', path); } app.set('views', __dirname + '/server/views'); app.set('view engine', 'jade'); app.use(logger('dev')); app.use(bodyParser.urlencoded({ extended: true })); app.use(stylus.middleware( { src: __dirname + '/public', compile: […]

尝试使用mongoose和async保存到数据库时出现多个错误

我正在尝试使用mongoose将某些内容保存到数据库中。 事情是我需要确保保存完成之前,我在程序中移动并closures连接。 知道保存是在mongooseasynchronous我试着使用此代码: saveFunction = function(song){ song.save(function(err, userObj){ if(err){ console.log('Error' + err); } else{ console.log('saved successfully:', userObj); } }); }; database.prototype.add= function(newSong){ mongoose.connect(url); var song = new songModel({id : newSong.getId(), title : newSong.getTitle(), artist : newSong.getArtist, genre : newSong.getGenre(), rating : newSong.getRating(), link : newSong.getLink()}); console.log("before async"); async.parallel([function (callback){ saveFunction(song); callback(); }],function(){ mongoose.connection.close(); console.log('closed connection'); […]

mongoose纲要

我有这些mongoose模式: var ItemSchema = new Schema({ "pieces": Number, "item": { type: Schema.Types.ObjectId, ref: 'Items' } }); var cartSchema= new Schema({ "items": [ItemSchema] }); 但是当我想要在项目中推新项目,mongoose添加_id字段(在新项目上),但我不明白为什么。

MongoError:没有更多文件在尾巴光标

我有一个封顶的集合,我试图尾巴使用mongoose 。 当所有的文件用尽或者根本没有时,可追踪的stream出错。 mongoose模式 var photoSchema = new Schema({ name: String, operations: Schema.Types.Mixed, }, { capped: { size: 300 * 500, max: 500, autoIndexId: true } }); 履行 var RawPhoto = mongoose.model('RawPhoto', photoSchema); var ProcessedPhoto = mongoose.model('ProcessedPhoto', photoSchema) var ProcessedPhoto = mongoose.model('ProcessedPhoto', photoSchema) var processedPhotoStream = ProcessedPhoto.find().tailable(true, {awaitdata: true, numberOfRetries: Number.MAX_VALUE}).stream(); processedPhotoStream.on('data', function(photo){ console.log(photo.name); }).on('error', […]