Articles of mongodb

我如何映射使用复杂的子文档相互关联的对象

首先这可能是一个误导的问题,如果是这样的话,我将不胜感激一些指导我应该如何进行。 从我在网上find的,似乎MongoDB / mongoose mapReduce是做到这一点的最好方法,但我一直在试图把我的头围绕它,我努力去理解它的任何不平凡的东西,我想知道是否有人可以帮助解释我的问题。 我不一定在寻找一个完整的解决scheme。 我真的很感谢很好解释的伪代码。 我觉得我特别困惑的是如何处理汇总和组合2个或更多的子文档。 另外我知道这可能是一个糟糕的模型/集合devise,但不幸的是,这是完全没有我的手,所以请不要build议重塑。 我特别的问题是我们有一个现有的模型,如下所示: survey: { _id: 1111, name: "name", questions: [ {_id: 1, text: "a,b, or c?", type: "multipleChoice", options: [a, b, c,]}, {_id: 2, text: "what do you think", type: "freeform"} ], participants: [{_id: 1, name: "user 1"}, {_id: 2, name: "user 2"}], results: [{_id: 123, userId: […]

meteor:将文档复制到另一个集合,并在'expirationDate'之后从原始集合中删除

如果expirationDate (这是博客文档中的一个字段)没有通过当前date,我正在寻找一种有效的方式来发布博客文章。 以下是一个简单的工作解决scheme,但请阅读下面我想要做的。 Meteor.publish('nonExpiredBlogs', function() { var blogIds = [] var currentDate = new Date() Blogs.find().forEach(function(doc) { var expirationDate = doc.expirationDate var hasExpDatePassed = (expirationDate – currenDate) < 0 if (hasExpDatePassed === false) { // expiration date is Not passed, get the doc _id blogIds.push(doc._id) } }); return Blog.find({_id: {$in: {_id: blogIds}}}); } 我想知道是否有一个替代scheme,我不需要一个“forEach”函数,可能会更快计算。 例如,我可以实现npm […]

用mongoose检查一个文件是否存在于mongodb中

我正在尝试使用mongodb作为数据库来创build一个nodejs应用程序。 我需要检查用户名是否存在于MongoDB中。 如果用户名存在,它将输出“用户名不可用” ,否则将用该用户名列出所有用户的详细信息。 var userSchema = require('../schemas/user'); exports.collect = function(req,res) { userSchema.find({ username: "bob" }).exec(function(err,display) { if(err){ console.log(err); } else { if(display=='[]'){ res.send("username not available"); } else{ res.send(display) } } }); }; 有没有其他的或简单的方法来执行此操作?

帆在两个模型中插入相同的对象

有可能插入两个对象等于两个模型? 我创build了两个模型播放列表和歌曲,并创build了一个歌曲1和两个播放列表:播放列表1和播放列表2; 我希望播放列表1有歌曲1和播放列表2有相同的歌曲(歌曲1)。 但是,当我将播放列表1中的歌曲1与播放列表2中的歌曲1相关联时,播放列表1中的关系消失。 关系是1到N,我试着用关系N到N,但我解决不了。 有人可以帮我吗? 🙁 对不起,我的问题是,在一个控制器我有主要模型和两个模型的工作。 主要型号: — Playlist.js — module.exports = { attributes: { name: { type: 'string', required: true, unique: true }, // Associations tablets_playlists: { collection: 'Tablet', via: 'lista_tablet' }, songs_playlist: { collection: 'Song', via: 'song' } } }; 其他型号: — Song.js — module.exports = { attributes: { group: { […]

在做mongoose聚合查询时,_id字段的奇怪字符

我正在运行一个查询来尝试并获得重复的idlogging计数。 “歌曲”是在数据库中仅包含_id字段的子文档。 我运行查询后,我得到这些奇怪的字符在我的控制台输出,我怎么会不能得到实际的idstring,看起来像“555699e4ab3e43ec12accaf9”?

基于对象属性查询Mongoose文档

我有以下的mongoose模式: var UserSchema = new Schema({ name: String, age: Number, … tags: [{ text: String, … }] }); 和下面的数组: var tagTexts = ['tall', 'small', 'green', 'blue']; 我想检索所有包含至less一个标签的用户文档,其中包含tagTexts中的文本属性。 例如,如果我有以下用户和tagTexts数组 [{ name: 'Bob', age: 17, … tags: [{ text: 'small', … }] }, { name: 'Bill', age: 29, … tags: [{ text: 'dandelion', … }, { text: […]

访问客户端的根文件夹

我是开发服务器端应用程序的新手。 我在MongoDB中有一个集合,它存储了存储在根目录/uploads文件中的文件的名称。 我必须使用angular度在客户端下载它们。 但是使用ng-src或简单的src退出ng-repeat我得到一个404错误。 有没有办法让客户端访问目录的文件? <div class="row jumbotron" ng-repeat="item in items"> <div class="col-sm-1"> <img ng-src="../../../uploads/{{item.logo}}"> </div> <div class="col-sm-8"> <h4>{{item.name}}</h4> </div> <div class="col-sm-2 pull-right"> <button type="button" class="btn btn-lg btn-info" ng-click="showModal($index)">Edit</button> </div> </div> 也尝试通过../提供文件 – 404(Not Found) <div> <img src="../../../uploads/38809344bac1a3a77c5d1e0493763849.png"> </div>

骨干删除命令在Node服务器上执行,但前端没有触发同步事件

从Backbone sync发出删除命令后,尽pipeNode服务器执行命令并从MongoDB中删除了一个条目,但我并没有收到同步事件。 这是前端(主干)上的相关代码: handleDeleteCar: function (carId) { Backbone.sync("delete", cars.get(carId), {url:'/api/cars/' + carId}); cars.remove(cars.get(carId)); }, 和后端(Node)上: app.delete('/api/cars/:id', function (req, res) { var carImage = Car.findById(req.params.carId)._carImage; Car.remove({ _id : req.params.id } , function (err){ if (!err){ console.log("Cars deleted"); Image.remove({_id:carImage}, function (err){ if (!err) console.log("Image deleted"); res.json({"status":"OK"}); }); } }); }); 正如我所说的一切工作正常,除非我没有在浏览器中获取同步事件。 我正在使用我正在使用的其他所有动词(get,post和put)的事件。 我尝试从服务器不同的返回值,但无济于事。

mongoosevalidation匹配一个数组与另一个数组的常见string?

我的mongoose模式+validation var schemaInterest = new schema({ active_elements: { type: [String] }, pending_elements: { type:[String] } }); schemaInterest.methods.matchElements = function matchElements() { this.find({active_elements: this.pending_elements}, function(){ //shows all the matched elements }); }; 我不知道如何在mongoose中处理error handling。 我想这样如果元素匹配错误将返回,如果没有匹配,那么validation是成功的。 有任何想法吗?

返回文档的一部分使用$或在mongoosemongodb

User.find({ $or:[ {'userSetData.name': { $regex: new RegExp( searchTerm ,'i') }}, {'local.email': { $regex: new RegExp( searchTerm ,'i') }}, {'google.name': { $regex: new RegExp( searchTerm ,'i') }}, {'google.email': { $regex: new RegExp( searchTerm ,'i') }}, {'facebook.name': { $regex: new RegExp( searchTerm ,'i') }}, {'facebook.email': { $regex: new RegExp( searchTerm ,'i') }} ] }, function(err, doc) { […]