Tag: mongodb query

在node.js-mongodb中分组

我想在我的server.js中使用group,但是我得到这个错误: TypeError:Object #(Collection) has no method 'group' 我在网上看,看到这个函数的名字。 这是我写的: var monk = require('monk'); var db = monk('localhost:27017/Messages'); var collection = db.get('col'); collection.group(['a'], {}, {}, {}, function (e, docs) { res.json(docs); }); 谁能告诉我什么是错的? 谢谢!

mongoose文件过滤属性

我已经定义了一个模式 var UserSchema = new Schema({ firstName: { type: String, required: true }, lastName: { type: String, required: true }, email: { type: String, required: true }, location: { type: String, required: true }, picture: { type: String, required: true }, passwordHash: { type: String, required: true }, resetPasswordToken: String, resetPasswordExpired: Boolean }); 我有一个REST端点,它返回所有用户的列表。 在那个列表中,我想隐藏一些属性,例如passwordHash, […]

只有在mongoose的人口数组中删除文件objectid

我有一个非常困难的时候试图从一个数组中使用填充查询删除objectids。 这是我的模式 var userSchema = new Schema({ username: String, password: String, books: [{type: Schema.Types.ObjectId, ref: 'Book'}] } ); var bookSchema = new Schema({ bookid: {type:String, unique:true, required:true}, imgURL: String, fortrade: Boolean }); 问题是与下面显示的查询。 当我只希望它删除books数组中的objectid时,它将删除该书籍模式项目。 users.findOne({'_id':userid}).populate('books').exec(function(usererr,userdata){ if (usererr) return console.error(usererr); userdata.books.forEach(function(elm,idx){ if(elm.bookid==_book.bookid){ userdata.books[idx].remove(); } }) });

我怎样才能执行一个语句后,一个循环在JavaScript完成?

我正在查询一个mongo数据库,以便在类似rouge的游戏中检索显示的图块。 这是我使用的function: function get_display(){ var collections = ['austinsroom']; var db = mongojs(uri, collections); var temphtml = ''; for(var j = 0; j < 3; j++) { console.log("y=" + String(j)); db.austinsroom.find({"y": j}, {}).sort({"x": 1}, function(err, records) { if(err) { console.log("There was an error executing the database query."); return; } var i = records.length; while(i–) { temphtml […]

Mongoose多个$推到多个数组

我正在尝试更新Mongodb中的多个数据库条目: User.findByIdAndUpdate(req.user._id, {$push: {people_seen: person_id}}, {$push: {people_liked: person_id}}, function(err, usr){ console.log(req.user); res.json({success: true}); }); 但是,只有people_seen得到保存。

如何用一个请求更新数组对象的多个字段?

{ _id:xxxxstoreid store:{ products:[ { _id:xxxproductid, name:xxx, img:url, } ] } } 因为我无法预测更新的请求,params可能只是名称,或者它可能同时具有。 这里是我的查询,它更新成功,但它会删除其他字段,如果它们不在PARAMS中。 例如: var params={_id:xxid,name:'xxx',img:'xxx'} 要么 var params={_id:xxid,name:'xxx'} 在这种情况下,如果参数只是名称,它会删除img字段和更新。 User.update({'store.products._id':params._id},{$set:{"store.products":params}},callback);

MongoDB,Mongoose从一个Find中search另一个集合

我知道这是违反了MongoDB和它的无SQL模型的devise,但我试图在一个集合中查找文档,然后使用结果中的ID字段查找另一个集合中的相应logging。 有效地尝试模拟连接。 //query is irrelevant to question var results = collectionOne.find(query).limit(limit); var a = []; results.forEach(function(r) { var aquery = { id : {$eq : r.id}}; collectionTwo.find(aquery).limit(limit).exec(function, b) { if (err) { res.render('error', { status : 500 }); } else { a.push(b); } }); }); res.jsonp(a);

Mongo:总计$ geoNear和$ text没有结果

我正在尝试在Mongoose中执行geoNear +文本search聚合查询: landmarkSchema.aggregate( [ { "$geoNear": { "near": { "type": "Point", "coordinates": [parseFloat(userCoord1), parseFloat(userCoord0)] }, "distanceField": "distance", "minDistance": 1, "maxDistance": 5000, "spherical": true, "query": { "loc.type": "Point" } } }, { $match: { $text: { $search: sText } } }, { $sort: { score: { $meta: "textScore" } } } ], function(err,data) { if (data){ […]

MongoDB按types和date分组

我有一个带有简单文档的集合,用以下结构存储impressions和conversions impressions /* 1 */ { "_id" : ObjectId("566f1ef857c1e6dd3123050a"), "path_id" : ObjectId("55944c1ebe244fd19cbf510b"), "data_type" : "impression", "created_at" : ISODate("2015-12-14T19:56:40.100Z"), "__v" : 0 } /* 2 */ { "_id" : ObjectId("566f1fc9ac964e6f327c55d6"), "path_id" : ObjectId("55944c1ebe244fd19cbf510b"), "data_type" : "conversion", "created_at" : ISODate("2015-12-14T20:00:09.972Z"), "__v" : 0 } /* 3 */ { "_id" : ObjectId("566f2896739f6afa4485f327"), "path_id" : ObjectId("562e594315ef3d8c3f05d219"), "data_type" : "impression", […]

使用NodeJs将文档插入到Mongodb中将返回文档,但不在集合中

我有一个奇怪的问题,我有一个testing,看看certificate你不能创build一个新的用户,如果用户具有相同的名称/电子邮件存在,但它似乎总是失败。 但是,当我查看向用户添加预期细节的数据库的第一步时,它会插入并callback文档: [ { Username: 'AccountUser', Email: 'some@email.com', CreatedDate: Mon Sep 22 2014 12:52:48 GMT+0100 (GMT Summer Time), _id: 54200d90d0a34ffc1565df13 } ] 所以如果我从插入返回的文件做一个console.log这就是我所得到的,并且_id已经被mongo设置,这是正确的,所以我知道调用成功,没有错误。 但是,如果我然后去查看数据库(MongoVUE)收集是空的,所以我有点困惑,为什么会发生这种情况。 我正在使用MongoDB连接(即设置应用程序设置,然后使用app.set("database_connection", database);所以我有点困惑,为什么发生这种情况? 下面是一些示例代码,它是较大代码的一部分,但基本上包含在promise中: // Point of connection creation var mongoClient = mongodb.MongoClient; var connectionCallback = function (err, database) { if (err) { reject(err); } resolve(database); }; try { mongoClient.connect(connectionString, connectionCallback); } […]