Articles of mongodb query

mongoose – 删除子文档数组项目

我有这个用户的小模式: { username: String, contacts: Array } 因此,例如,某些用户的联系人将如下所示: { username: "user", contacts: [{'id': ObjectId('525…..etc'), 'approved': false}, {'id':ObjectId('534…..etc'), 'approved': true}] } 现在我需要从联系人中删除一个项目 ,所以我这样做: model.findByIdAndUpdate(23, {'$pull': { 'contacts':{'id':'525…..etc'} }}); 但似乎不工作,没有错误,但它不会被删除 ,我只想为用户返回此文件: { username: "user", contacts: [{'id':ObjectId('534…..etc'), 'approved': false}] } 如何实现这个?

MongoDB和Node.js中的dynamic查询

我正在使用后端Mongodb的nodejs / express应用程序。 在我的一个API调用中,取决于是否存在特定查询string参数,或者其他我想用$ gt或$ lt来向Mongodb发出查询。 在某些情况下,我们希望使用$ lt来请求所有小于tokenId ,但在其他情况下,我们希望使用$ gt的值大于tokenId 。 我们如何做到这一点,而不重复查询? 这是一个示例查询: collection.find({'film_id': {$in : genre}, '_id': {$lt: tokenId}}).sort({'_id': -1}).limit(25).toArray(function(error, films) 有没有办法dynamic创build查询,而不是实际做两个不同的查询?

比较MongoDB中的两个date字段

在我的collections中,每个文档有2个date,修改和同步。 我想find那些修改>同步,或同步不存在。 我试过了 {'modified': { $gt : 'sync' }} 但是没有显示出我的预期 有任何想法吗? 谢谢

在mongoose中创build和查找地理位置

我试图在我的用户模型中保存位置的经度/纬度,并用$geoNear查询它。 我已经查看了几乎所有可以find该主题的页面,但是我仍然不确定如何1)适当地创build模型以及如何查询它。 这是我的模型的一部分: loc: { //type: 'Point', // see 1 //type: String, // see 2 coordinates: [Number], index: '2dsphere' // see 3 }, @ 1:根据文档的types必须是'点',如果我想存储一个点,但它会抛出 TypeError: Undefined type `Point` at `loc` Did you try nesting Schemas? You can only nest using refs or arrays. 这是有道理的,因为我猜它应该是一个String @ 2:这不会立即抛出一个错误,但是当我尝试存储一个用户时,我得到: name: 'ValidationError', errors: { loc: { [CastError: Cast […]

在MongoDB中汇总当地时区

我正在build设将在意大利使用的mongodb和nodejs应用程序。 意大利时区为+02:00。 这意味着如果有人在7月11日凌晨1点保存一些数据,那么它将被保存为7月10日晚上11点,因为mongo以UTC保存date。 我们需要显示明智的tx计数。 所以我通过查询date进行了分组。 但它显示前一天的TX。 什么应该是这个解决方法。 > db.txs.insert({txid:"1",date : new Date("2015-07-11T01:00:00+02:00")}) > db.txs.insert({txid:"2",date : new Date("2015-07-11T05:00:00+02:00")}) > db.txs.insert({txid:"3",date : new Date("2015-07-10T21:00:00+02:00")}) > db.txs.find().pretty() { "_id" : ObjectId("55a0a55499c6740f3dfe14e4"), "txid" : "1", "date" : ISODate("2015-07-10T23:00:00Z") } { "_id" : ObjectId("55a0a55599c6740f3dfe14e5"), "txid" : "2", "date" : ISODate("2015-07-11T03:00:00Z") } { "_id" : ObjectId("55a0a55699c6740f3dfe14e6"), "txid" : "3", "date" : […]

在Mongoose中对嵌套的子文档进行sorting和分组

我有一个架构, Comment ,如下所示。 这是一个“评论”和“回复”的系统,但每个评论和回复都有多个版本。 当用户想要查看评论时,我想只返回status为APPROVED最新版本。 const Version = new mongoose.Schema({ user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, body: String, created: Date, title: String, status: { type: String, enum: [ 'APPROVED', 'OPEN', 'CLOSED' ] } }) const Reply = new mongoose.Schema({ user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, created: Date, versions: [ Version ] }) const […]

从数组中获得所有匹配属性的结果

我知道如何使MongoDB根据如下数组find一行: useritems.find({userid: useridhere, "items.id": idhere}) 但是,我将如何search,并获得所有被激活的项目,或获得所有项目的物业属性? 例如: useritems.find({userid: useridhere, "items.activated": true}) 会导致从激活的用户获取所有项目是真实的。 这是我的项目架构: var userItemsSchema = new Schema({ userid : String, items: [ { id: {type: Number, default: 1}, activated: { type: Boolean, default: false}, endtime : {type: Number, default: 0}, }, ], }); module.exports = mongoose.model('useritems', userItemsSchema);

如何在MongoDB中进行收集?

我们在Node.JS中有以下查询 mongo.connect('mongodb://XXX:XXX@ds054XXX.mlab.com:54289/XXXdb', function (err, db) { var collection = db.collection('chatmessages') var stream = collection.find().sort({ _id: -1 }).limit(20).stream(); stream.on('data', function (chat) { socket.emit('user message', chat.content, chat.dateCreated); }); }); 如您所见,查询是最近input的20条logging的集合。 但是从这个结果来看,我们想在_id中再次求助于1,所以在列表中我们将有55到75的ID(顺序)。 所以最后一个总是在底部。 我们如何再次实现这一目标?

MongoDB计数不同的值?

下面显示我的代码。 我必须计算重复值的次数。 在这里,我有存储在“结果”独特的价值。我用collection.count()来计算,但它不工作。 请任何人告诉我,我不得不错误。 非常感谢你 。 var DistinctIntoSingleDB = function(Collection,arr,opt,distVal,callback){ Collection.find({}).distinct(distVal, function(err, results) { if(!err && results){ console.log("Distinct Row Length :", results.length); var a,arr1 = []; for(var j=0; j<results.length; j++){ collection.count({'V6': results[j]}, function(err, count) { console.log(count) }); arr1.push(results[j]+ " : " +a); } callback(results,arr1); }else{ console.log(err, results); callback(results); } });

mongoosefindOneAndUpdate更新多个字段

findOneAndUpdate方法无法正常工作。 我试图一次更新所有的字段,但它只是更新(设置)最后一个字段。 这只是最后一个领域。 有人能告诉我我做错了什么,或者我能做些什么来达到预期效果? 这是我的findOneAndUpdate代码: Book.findOneAndUpdate({_id:bookId},{$set:{"name": name},$set:{"genre": genre},$set:{"author": author},$set:{"similar": similar}}).exec(function(err, book){ if(err){ console.log(err); res.status(500).send(err); } else { res.status(200).send(book); } });