Tag: mongodb

在mongodb中存储数据的最佳方法

我正在开发一个有很多关系的项目。 我想知道哪一个是最好的方法来存储数据。 创buildchild_model,然后将_id推给parent_model。 在父模型内部创buildchild_model,我们不只是推送整个数据_id。

nodejs driver 2.x中的mongodb native_parser

连接到mongo时,我总是使用推荐的方式 MongoClient.connect('mongodb://localhost:27017/myproject', { native_parser: true}, (err, r) => { … }) 我正在更新到node-mongodb-native驱动程序的2.1版本。 根据主页http://mongodb.github.io/node-mongodb-native/2.1/whats-new/ ,引入了一个新的JS-BSONparsing器,它取代了C ++扩展。 这是否意味着不再需要{ native_parser: true }选项?

Javascript新对象字段未保存

我使用node.js和mongoose基于查询来获取一些数据。 Mongoose函数findOne返回一个承诺,它给了我一个JavaScript对象。 我想添加一个新的字段到该对象,并给它一个值,然后应用stringify函数。 如果我打印string,我添加的新字段将不会被打印,即使我可以通过对象访问它。 model.findOne({},function (err, names) {}) .then(function(data){ response.writeHead(200, {"Content-Type": "application/json"}); data['status'] = 200; data['message'] = 'OK'; response.write(JSON.stringify(data)); response.end(); }, function(err) { response.writeHead(500, {"Content-Type": "application/json"}); var execError = '{"status":500,"message":"'+ err.toString() +'"}'; response.write(execError); response.end(); } );

根据MongoDB中另一个集合中的数据查询一个集合中的数据

我想学习如何使用MongoDB,我真的很困惑如何做到这一点。 我所拥有的是两个藏品,一个拥有多个用户,另一个拥有多个项目。 例如: 用户: { "_id" : ObjectId("56dba03438e1a255b97e82b6"), "name" : "john", "age" : 25 } 项目: { "_id" : ObjectId("56dba0db38e1a255b97e82b7"), "name" : "pencil" } 现在我想在我的应用程序中做的是允许用户select一个项目,但多个用户可以select相同的项目。 所以我需要跟踪哪些用户点击了哪些项目。 我想过使用另一个跟踪用户标识和项目标识的集合(用户只能select一个项目)。 这是正确的方法吗? 我创build了这个集合: useritems: { "_id" : ObjectId("56dba0db38e1a255b97e82b7"), "userid" : "56db9fb038e1a255b97e82b5", "itemid" : "56dba03438e1a255b97e82b6" } 如果这是正确的方法,那么我希望能够在我的应用程序中点击一个项目,并显示所有select该项目的用户的列表。 我怎样才能做到这一点? 我尽可能只显示在应用程序中select的itemid = itemid的useritems集合文档…但是现在,我将如何显示基于useritems集合中用户集合中的所有用户? router.get('/userlist/:id', function(req, res) { var db = req.db; var […]

为什么我的节点表示应用程序不从mongoose中获取数据?

我有一个PHP MVC的背景,刚开始学习Nodejs。 这是我的应用程序目录结构: 根 – 控制器-user.js – 模型-user.js – 公共-stylesheet -style.css – views -index.jade – app.js – package.json – gulpfile.js 这是我的控制器文件:user.js var User = require('../models/user.js'); exports.list = function(req, res){ User.find(function(err, users) { res.send(users); }); }; 这是我的模型文件:user.js var mongoose = require('mongoose'), Schema = mongoose.Schema; mongoose.createConnection('mongodb://localhost/mydb'); var userSchema = new Schema({ name: String, country: String, email: String, […]

mongoosefind并使用多个字段sorting

我在MongoDB中有一个文档模式: var postSchema = new mongoose.Schema({ domain: { type: String, enum: ['public', 'private'], required: true }, created_at: { type: Date }, last_modified: { type: Date }, data: { start_date: { year: { type: Number, required: true }, month: { type: Number }, day: { type: Number }, hour: { type: Number }, minute: { type: […]

MongoDB:聚合$项目采取数组当前项目

嗨,我有这样的MongoDB查询。 .aggregate( [ { $match : { comment_box : "somdata" } }, { $project : { comment : 1, created_at: 1, current_date: "$replies.created_at", }, dateDifference: { $subtract: [ new Date(), "$created_at"] } }}, ] ) 想象一下,我想从当前date字段的回复数组中获取created_at值。 但是这个查询返回 current_date: [ "2016-03-08T13:48:27.882Z", "2016-03-08T14:26:22.194Z" ] 而不是此数组中每个元素的当前created_at值 我尝试了很多方法,但有错误 current_date: "$replies.0.created_at", current_date: "$replies.$.created_at", current_date: "$$replies.created_at", 等等 请帮我检索这样的数据 current_date:"2016-03-08T13:48:27.882Z",

node.js嵌套async.eachSeries

我刚刚进入节点,并结束了新的async.js。 我不确定我想做的事情是可行的(猜测是这样),还是我的做法是正确的(猜测不是)。 这是事情: 这个代码是pipe理一些instagram数据,所以我会根据代码实际需要做的事情来解释一切,以便更容易理解。 连接到mongoDB,得到一些Instagram帐户ID(完成) 为每个ID我想获得拉斯维加斯10个职位(我已经保存在我的数据库中)。 对于每个帐户的10个项目,我需要获得(评论+喜欢)的总和,并将该值与第一个eachSeries调用的out代码相比较。 router.get('/users_all', function(req, res) { User.find().sort({'counts.followed_by': 'descending'}).exec(function(err, users) { async.eachSeries(users, function(item, outerCallback) { Media.find({'userId': item.user_id}).exec(function(err, medias) { var count = 0; async.eachSeries(medias, function(item, outerCallback2) { count += item.comments_count + item.likes_count; }); }); item.totalAmount = count; }); res.json(users); }); } 我只是没有设置callback每个eachSeries,因为我不知道把它们放在哪里,我认为我的代码更容易理解这种方式。 如果需要更多关于代码请求的澄清。 谢谢你的帮助。

延迟响应,直到所有查询完成

我的数据库包含项目和阶段。 项目可以有多个阶段。 模型类似于这些: 相: var phaseSchema = new mongoose.Schema({ project: { type: mongoose.Schema.Types.ObjectId, ref: 'Project' } }); 项目: var projectSchema = new mongoose.Schema({ name : { type: String } }); 目前我正在使用以下方法来检索每个项目的阶段: var calls = []; var projects = _.each(projects, function (p) { calls.push(function (callback) { req.app.db.models.Phase.find({ project: p._id }, function (err, doc) { if (err) […]

错误“临时标题显示”在铬上

我创build了一个API,当我调用它必须从数据库中删除图像。 作为我使用MongoDB的数据库,并使用gridfspipe理图像。 这是调用API从数据库中删除图像的代码。 vm.delete = function(img){ $http.delete(baseImage + img) .success(function(data){ console.log(data); }).error(function(error){ console.log(error); }); }; 这是API的代码 gfs.exist({_id: req.params._idImg}, function (err, found) { if(found){ gfs.remove({ _id: req.params._idImg }, function (err) { if(err){ throw err; } repliesManager(res, 200, {"message":"OK"}, "OK"); }); } }); 但是,当我调用这个API,图像被清除,但服务器停止,结果是一个错误。 只有当您使用Chrome时,才会出现此错误,并且错误为“临时标题显示”。 这是AnswersManager的代码 module.exports = function(res, status, data, message, err) { var respObj = […]