Tag: mongodb

有没有办法创build一个“存储过程”调用多个查询在单个查询在mongodb(mongoose)

有没有办法在MongoDB中创build“存储过程”? 例如一个查询一次访问mongodb但实际调用多个集合(使用mongoose调用mongodb) 我知道mongodb有serverside javascript 。 但是不同的是,我不认为服务器端函数能够调用集合。 例如,如果我有下面的例子。 1.例子一(关系集合) mycollection1.findOne({_id: id}, function(err, result1){ mycollection2.findOne({_id: result1.id}, function(err, result2){ mycollection3.findOne({_id: result2.id}, function(err, result3){ return {}; }); }); }); 2.例子二(非关系集合) mycollection1.findOne({_id: id}, function(err, result1){ mycollection2.findOne({}, function(err, result2){ mycollection3.findOne({}, function(err, result3){ var someDataToDisplayToUI = { data1 : result1, data2: result2, data3: result3 }; return someDataToDisplayToUI; }); }); }); 我正在使用express.js服务器的mongoose,目前mongoose三次以上的例子。 有没有办法打一次?

无法使用HTTP Put更新MongoDB集合中的对象?

我是AngularJS的新手,我试图更新我的MongoDB数据库。 我正在尝试更新我的集合中的对象时遇到问题。 以下是我试图这样做的尝试: //listviewFactory is already injected and returns an event object //I call $scope.put when clicking (ng-click) on a button $scope.event = listviewFactory.getEvent(); $scope.put = function(event){ var currentUser = {}; if($cookieStore.get('token')) { currentUser = User.get(); } event.attendees.push(currentUser); $http.post('/api/events/' + event._id, event).success(function(data){ for(var i = 0; i < event.attendees.length; i++){ console.log("Attendees: ", event.attendees[i]); } $location.path('/'); […]

如何通过引用对象获取所有的值?

我有以下模式。 var orgSchema = new Schema({ name : String, email : String, webiste : String }); var empSchema = new Schema({ name : String, email : String, role : String, org : { type: Schema.Types.ObjectId, ref: 'org'} }); var leaveSchema = new Schema({ emp : { type: Schema.Types.ObjectId, ref: 'emp'}, from : Date, to : […]

从node.js中的mongoDB数据生成JSON树

有很多像这样的问题,但不幸的是我没有find任何适合我的情况。 最近的是从MongoDB Node.Js创build一个JSON树,但它仍然没有按预期工作。 或者,也许我的头不能包装这个问题… 我有架构,我的问题的关键组件如下所示: var userSchema = new Schema({ _id: {type: Number}, children: [{type: Number, ref: 'User'}] )}; 每个用户可能有三个孩子的用户,所以它可以无限深入。 幸运的是,我必须涵盖两种情况 – 从特定用户构buildJSON树最多3个嵌套 计算来自特定根的10个嵌套的数据。 我尝试在我的express.js api中写这样的recursion函数: api.get('/user/tree/:user_id', function (req, res) { var user_id = req.params.user_id; var depth = 0; var root = {}; function walker(parent) { if (depth >= 3) { return res.send('whole data, not […]

确保独特的索引mongodb

我试图确保一个索引在MongoDB中是唯一的,即时通讯使用node.js,但它根本无法工作。 //ensures unique data only db.social_media.ensureIndex( { name: 1 }, { unique: true } ); db.social_media.insert({name:'stan'}, function(err, docs){ console.log(err); console.log(docs); }); db.social_media.insert({name:'stan'}, function(err, docs){ console.log(err); console.log(docs); }); 以下输出是: null { name: 'stan', _id: 53e9d2ee88b96dd224c6333f } null { name: 'stan', _id: 53e9d2ee88b96dd224c63340 } 这意味着两个文件插入 – 即使我特别指定“名称”应该是唯一的。 我在这里错过了什么?

使用节点在MongoDB中进行子文档更新

我有这样的collections结构。 application_data: { name : A, site : B, location : [ { key1 : value1, key2 : value2}, { key3 : value3, key4 : value4} ] } 现在我想添加一个另外的数组到“位置”作为一个子文档,这样我的位置就变成了 location : [ { key1 : value1, key2 : value2}, { key3 : value3, key4 : value4, key5 :[{subkey1:subvalue1, subkey2:subvalue2}]} ] 我尝试$push & $addToSet这并没有帮助我。 有人可以帮我吗? 如果你使用nodejs解释一个例子很有帮助。

如何在更新mongodb时返回更新的对象?

我试图通过mongo中的另一个字段更新objectId。 我现在的代码是: twitterDb.update({'twitterId': t.id},tweetData, {upsert:true}, function(err, twitterDb) { //do stuff here }); 请注意,twitterId与objectId不同。 如何返回完整的对象,以便可以获取objectId? 提前致谢!

MongoDB聚合并匹配返回的键

事情是,我正在写一些代码从我的数据库获取用户消息。 数据库有sent_to , sent_by , 消息键和命令我下面得到的数据键是 db.users_messages.aggregate({$group: {_id: {to: "$sent_to", by: "$sent_by"}}}) 这将返回所有sent_to和sent_by Users_IDs的列表。 现在让我们假设,如果user1已经发送消息给user2 ,同时user2已经回复给user1 ,我希望它只返回user1 user2 ,而不是user2 user1 。 而当我稍后检查这个东西的时候,我还剩下分页的事情,因为我正在对汇总应用$限制 。 希望有人能帮助!

改变mongoose的文件顺序

我在第一次使用mongoose.js与数据库鬼混,但我无法弄清楚对我来说似乎是非常基本的function。 我想在数据库中放置一个特定的文档,更新文档加载的顺序。 除了可能的.sort()之外,我找不到一些内置的方法,但是这意味着我必须跟踪每个实例的索引,当我想更改顺序时相应地更改它们,然后对基于这个新的属性的数据库,这似乎是重新发明轮子给我。 我只是忽略了一些有关数据库的基本概念,我不应该这样做吗? 或者我错过了我正在寻找的function?

处理与nodejsasynchronouscallback的循环

我是新的nodejs和mongoose。 我有一个从2009年到现在的数据库,并希望统计每个月的数据数量,并返回为json数组。 缓慢的asynchronouscallback会导致所有date为2014年8月1日 什么是适当的方式来实现呢? var dbURL = 'mongodb://localhost/database'; var db = require('mongoose').connect(dbURL); var c_db = require('./models/models.js').c_db; var start_date = new Date(2009,0,1); end_date = new Date(2014,8,1), next_date = new Date(); var test_json=[]; var total_months = (end_date.getFullYear() – start_date.getFullYear())*12 + (end_date.getMonth() – start_date.getMonth()); var next_date = start_date; for(var i=0;i<total_months;i++){ var firstDay = new Date(next_date.getFullYear(), next_date.getMonth(), 1); var […]