Tag: mongodb

mongodb:能find一个2d的索引返回距离吗?

我从mongodb文档中看到,与geoNear的db.runCommand返回距离也是。 我在node.js中使用mongoose, 想知道是否可以用Model.find({'loc':{$ near:[lng,lat],$ maxDistance:5 / 111.12},…. 。) 如果您有多个2d索引,则使用geoNear的runCommand不起作用。 我有一个集合中的2个2d索引。 一个在模式中定义,另一个是DbRef的一部分。 另外,我对用mongooserunco​​mmand使用的确切语法不是很自在。

如何使用node.JS创build一个基于令牌的login机制?

我正在做一个iOS应用程序,需要我login到我的node.JS基于Web服务器。 任何人都可以指向我的教程,这引发了一些灯光,如何为一个login会话生成唯一的令牌? 我想到的是,通过发布请求获取用户名和密码,validation凭据,然后生成时间戳的散列以及用户名和密码,并生成一个validation令牌,并将其发送回客户端进行保存它并进一步使用它。 这个会话文档将会话数据和session_id是唯一的密钥。

Mongoose DBRef删除原始模式删除删除DBRefs并从DBRefarrays拉出

在mongoose中 , 我可以声明模式 ,也可以使用 DBREF 这只是把ObjectId或一个ObjectId的数组 并填充(获取)这些项目。 我认为这将是一个DBRef删除需要时的问题。 有什么办法可能同步去除DBref ? 例如 从数组中删除 DBRef应该删除其他集合中的DBRef的DBRef,并从 DBRef的数组中取出 DBRef在不同的集合中 从文档的Schema中删除一个文档(DBRef)也会删除其他集合中的DBRef的文档,并且从不同集合中的DBRef数组中提取 DBRef 这些可能吗? 如果是这样, 我怎么能实现这些 ? 或者其他的模型devisebuild议 ?

节点CSVparsing器输出问题

我正在尝试使用Node CSVparsing器从我的Mongo数据库中读取查询结果,并将其写入到csv文件中。 当我运行我的脚本,我得到一个csv文件,第一行有两个[对象]条目,其他一切都是空白的。 这是我的代码: // node samples/sample.js var csv = require('csv'); var mongoose = require('mongoose'); var User = require('../models/userModel').User; dsn = "mongodb://localhost/test"; mongoose.connect(dsn); console.log ("here"); var users = User.find({}, function(err, result){ console.log(result); }); var columns = ['userName','agencyName','email','password','id']; csv() .from(users, { columns: true }) .toPath(__dirname+'/users.csv',{ columns: ['userName','agencyName','email','password','id'] }) .transform(function(data){ data.unshift(data.pop()); return data; }) .on('data',function(data,index){ console.log('#'+index+' '+JSON.stringify(data)); […]

mongo:“2d”指数和正常指数

location: {lat: Number, lng: Number} 位置是在我的MongoDB 2d索引,我一直在使用这个地理空间search,这是正常工作。 现在,如果我需要searchdb.find({lat:12.121212,lng:70.707070}),它会使用相同的索引吗? 或者,我是否需要定义一个新的索引? 如果是这样,怎么样? 我在node.js中使用mongoose驱动程序

从数据库获取最新的5个数据

我使用node.jsexpression和使用MongoDB,我有一个用户名和ID的数据列表。 如果我想console.log 5插入到数据库的最新数据,你会怎么做? 有任何想法吗?

Node + Mongo:向集合中的数组添加logging

我正在写一个博客系统。 现在我正在处理post的评论。 以下是每个post的模式: { "topic": "Post Topic", "post": "<p>\r\n\tPost text</p>\r\n", "time_added": 1343167025, "author": "Ashley Brooks", "_id": { "$oid": "500f1a315759c73805000001" } } 现在,我想为这个post添加评论。 我想存储评论的最佳方式是: { "topic": "Post Topic", "post": "<p>\r\n\tPost text</p>\r\n", "time_added": 1343167025, "author": "Ashley Brooks", "_id": { "$oid": "500f1a315759c73805000001" }, "comments" : [ { "author":"James Brown", "comment":"My awesome comment" }, { "author":"Jimmy White", "comment":"And this […]

DAL for mongoDB

到目前为止,我们的node.js项目使用了一个我们构build的类(cache.js)来保存内存中的各种集合。 数据访问层用于从逻辑中抽象数据,并允许我们稍后轻松添加持久性。 这个dal.js对所有CRUD操作同步调用cache.js。 现在已经到了,我想把MongoDB绑定到DAL而不是这个cache.js。 问题是,mongoDB + node.js的理念是用一个callbackasynchronous调用数据库。 我们是否应该重新devise我们所有的应用程序(包括使用DAL的类)? 执行业务逻辑在每个他们需要的CRUD上使用callback函数是不是太复杂和错误? 保持KISS的最佳做法是什么(我知道mongoose可以帮助,但不是直接)?

Mongoose:在一个JSON对象中使用$ in操作符

我是Nodejs和mongodb的新手。 我正在尝试为以下情况获取数据。 考虑3个模式如下Profile模式 var ProfileSchema = new Schema({ username: {type: String, match: /^[a-zA-Z0-9_.-]+$/, unique: true}, name: String}); 文章架构 var PostsSchema = new Schema({ profileid: {type: ObjectId, ref: 'Profile'}, message: {type: String, match: /^.{1,160}$/} }); 遵循架构 var FollowSchema = new Schema({ profileid: {type: ObjectId, ref: 'Profile'}, followingid: {type: ObjectId, ref: 'Profile'}}); 这与Twitter层次结构类似。 要获得我的追随者的所有post,我尝试了以下 Follows.find({'profileid' : '500d18823e792d8814000001'}).select('followingid […]

在Mongoose.js v3中进行版本控制

我知道在Mongoose中版本化主要是为了避免子文档数组的问题。 但是,是否也可以使用该function来避免对文档的更新发生冲突? 即两个用户同时更新同一个文档。 理想情况下,我想要做的是这样的: 使用find()检索文档,检查版本是否与预期的版本匹配(由If-Match头中的客户端发送)。 如果是这样,继续更新文档。 在save()上,如果版本从(1)开始改变,则失败。 如果我把setTimeout()放在1和2之间,那么在3之前手动更新__v ,保存仍然成功。 我认为这是因为在这种情况下,Mongoose不认为有必要在更新中包含版本子句。 我也试着在save()之前调用increment ()。 我认为这将增加在保存操作的版本,但它似乎是增加版本,然后保存抱怨它不匹配什么是在数据库(这显然不会)。 我最好用自己的中间件来实现版本控制吗?