Tag: mongodb

按date分类mongoose模式数组

这是Schema: var userschema = new mongoose.Schema({ user: String, messages: [{ title: String, author: String, message: String, date: { type: Date, default: Date.now }, }], }); 我试图在按datesorting的单个页面中显示所有用户的消息。 我知道如何显示特定用户的所有消息,但如果我有多个用户,我不知道如何使用mongoose按date对他们的消息进行分类。 有没有办法做到这一点…? 感谢您的提前!

如何在没有在Mongoose中获取父项的情况下对子文档执行操作?

现在,如果我想删除一个子文档,我这样做: Post.findById(post_id).exec(function(err, post) { post.comments.remove({'_id': comment_id}); post.save(function(err) { res.end("Hooray!"); }); }); 这对我来说似乎并不是最理想的,因为每次删除评论时,整个post都会从DB中提取出来,并且附加了很多东西。 那么,是否可以修改子文档而不用提取父文档呢?

在mongodb中插入数据时添加一个条件

基本上我想检查数据库中插入数据(即使用本地mongodb驱动程序)之前是否存在特定的数据,所以我试图使用collection.findOne()检查数据是否存在,如果属性的属性为null collection.insert()执行。 显然我的代码不按照逻辑工作,请有人启发我! 我的一些代码: exports.addUser = function(req, res) { var twitterId = req.body.provider; var userEmail = req.body.email; db.collection('users', function(err, collection) { collection.findOne({'email':userEmail }, function(err, item){ if(item.email === null){ collection.insert({ 'email': userEmail, 'provider': { 'twitter': { 'id': twitterId } } }, function(err, result) { if (err) { res.send({'error':'An error has occurred'}); } else { console.log('Success: ' […]

问题在复合js“适配器没有定义”

我是新来的compoundJs,开发示例应用程序,而运行的应用程序,它显示我适配器没有定义。 它想要安装 npm install jugglingdb-mongoose 而我正在安装npm它显示 'jugglingdb-mongoose' is not in the npm registry. npm ERR! 404 You should bug the author to publish it 有没有什么办法可以安装这些npm。 如何解决这个问题。 任何人都可以帮忙

无法连接到mongodb

所以我用home brew安装了mongo,我已经通过npm安装了,所以我有JS驱动程序。 当我在命令行运行mongo时,我得到了这个 – MongoDB shell version: 2.2.2 connecting to: test Thu Jan 24 02:38:26 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91 exception: connect failed 为什么会这样呢?

NodeJS的连接池

我有一个应用程序已经最大的连接到MongoDB的数量,我假设如果驱动程序设置正确,你不必担心closures连接。 我见过有人提到通用池模块,但是使用Node和MongoDBclosures或合并连接的最佳过程是什么? 这是我的应用程序的连接代码: var sys = require("sys"); var app = require('http').createServer(handler); var io = require('socket.io').listen(app); app.listen(1337); io.configure(function () { io.set('authorization', function (handshakeData, callback) { callback(null, true); }); }); function handler (req, res, data) { sys.puts('request made to trackerapp.js'); res.writeHead(200); res.end(data); } io.sockets.on('connection', function (socket) { socket.on('adTracker', function (data) { var adRequestData = data; var databaseUrl […]

填充后错误的数组顺序

我有这个问题,但是我不能在这里粘贴整个代码,所以让我试着解释一下。 我需要通过idfind一些文件,并填充它的ObjectId的数组元素。 比方说,我有从用户集合中的以下文件: { _id: 1, "first_name":"Nick", "last_name":"Parsons", "email":"nick@movementstrategy.com", "password":"foo", "clients":[ "50f5e901545cf990c500000f", "50f5e90b545cf990c5000010", "50f5e90b545cf990c5000013" ] } find它后,我就像这样填充它的客户: User.findById(1) .populate('clients') .exec(function (err, user) { }); 上面的代码执行后,我有'用户'variables与客户端的填充数组。 但客户有错误的顺序,像这样: { _id: "50f5e901545cf990c500000f", "first_name":"cl1", }, { _id: "50f5e90b545cf990c5000013", "first_name":"cl3", }, { _id: "50f5e90b545cf990c5000010", "first_name":"cl2", } 应该: "50f5e901545cf990c500000f", "50f5e90b545cf990c5000010", "50f5e90b545cf990c5000013" 代替: "50f5e901545cf990c500000f", "50f5e90b545cf990c5000013", "50f5e90b545cf990c5000010" 有人有类似的问题,还是我幸运? 编辑:我已经添加了代码: http ://pastie.org/5901177在该代码中,我创build3个客户端,并推入到user.clients数组。 之后,我在user.clients数组的顶部添加了一个更多的客户端。 所以当我这样做 […]

MongoDB的ObjectId用法

我正在使用MongoDB和Mongoose ODM为我的NodeJS REST项目: 我的模型模式是: var playerSchema = new mongoose.Schema({ name: String, team: mongoose.Schema.Types.ObjectId }) 和服务器端 : app.post('/players', function(req, res) { Players.find(function(err, players) { res.json(players); }); }); 回应是: … { "_id": "511a6010e6ca7b0fe0af02ff", "name": "player-1", "team": "511a53e2e6ca7b151c09ce8d" } … 但我想要的东西是这样的: { "_id": "511a6010e6ca7b0fe0af02ff", "name": "player-1", "team": { _id: "511a53e2e6ca7b151c09ce8d" name: "team-1" } } 我做错了什么? 或者我还没有真正了解ObjectId? 谢谢!

node.js mongodb检索ISODate格式

在MongoDB中,date的值是: "date" : ISODate("2012-10-11T07:00:00Z") 在与mongoose节点我检索date,并具有以下值: entry.date = 2012-10-11T07:00:00.000Z 所以在我的代码中,我执行以下操作: var date = new Date(entry.date); var format = date.getMonth() + '/' + date.getDate() + '/' + date.getFullYear(); 我得到的输出: 9/11/2012 这有什么问题? 我会认为产量将是: 10/11/2012 我明白月份从0到11date开始。 但是,因为即时通讯采取从date格式为什么我不得不从它减去1个月。 谢谢

为什么Node + MongoDB使用addToSet更新无法更新数组

我无法弄清楚这一点,我已经尝试使用terminal执行相同的查询,它是成功的。 我应该注意,同样的查询返回一行使用MongoHub时,但检查logging后没有改变。 下面是mongo设置和更新操作。 var mongo = require('mongodb'); var Server = mongo.Server, Db = mongo.Db, BSON = mongo.BSONPure; var server = new Server('localhost', 27017, {auto_reconnect: true}); db = new Db('help', server, {safe: true}); type = 'issues'; id = 2; body = { comments: '64' }; db.collection(type, function(err, collection) { collection.update({id:id}, {$addToSet: body}, {safe:true}, function(err, result) { […]