Tag: mongodb

是否有可能从集合发布具有多个条件字段的项目?

考虑这种情况,我有一个party对象,这个party对象有关于派对,位置,时间,客人等的一些信息字段。它也有一些字段为一些信息字段设置隐私,如showLocation, showGuests等等。这些将隐藏这个信息从没有被邀请的用户。 我怎样才能只发送给客户的“显示”字段为真的字段? 当我发布一个单一的项目,我可以使用这样的事情:(合并不是一个真正的function) Meteor.publish("party", function (_id) { var party = Parties.findOne({_id: _id}); var fields = merge( {name: 1, title: 1, creatorUserId: 1}, (party.showLocationAndDate ? {location: 1, date: 1} : null), (party.showGuests ? {guests: 1} : null) ); return Parties.find({_id: _id}, {fields: fields}); }); 当我发布多个项目,但只有一个条件,我可以使用这样的东西: Meteor.publish("parties", function () { var fieldsWithLocation = { name: 1, […]

在MongoDB中以半径(以米为单位)的查询点

您好,我无法获取在经度和纬度坐标X和Y范围内半径R(米)内的所有文件 我在我的collections中使用了2D遗留索引 db.users.createIndex({'location': '2d'}); 我正在尝试以下内容: var users = db.collection('users'); users.find( { location: { $geoWithin { $center [ [ Y, X ], R / 6378100 ] } } }); 我非常确定这是[Y,X]经度,然后是纬度。 6378100是根据谷歌的地球半径。 我有点应该是相距<50米,所以R = 50应该find他们,但我必须使R约4000,这是相当奇怪的。 有任何想法吗?

为什么我似乎不能将普通对象合并到Mongo文档中?

我有一个来自第三方服务器的数据馈送,我正在将其转换为JSON。 数据馈送将永远不会有我的mongoDB的自动生成的_id s,但有一个唯一的标识符vehicle_id 。 下面的函数是处理如果存在具有相同vehicle_id的mongo文档,那么处理数据馈送生成的json对象fresh_event_obj并将其值复制到mongo文档中。 function update_vehicle(fresh_event_obj) { console.log("Updating Vehicle " + fresh_event_obj.vehicleID + "…"); Vehicle.find({ vehicleID: fresh_event_obj.vehicleID }, function (err, event_obj) { if (err) { handle_error(err); } else { var updated = _.merge(event_obj[0], fresh_event_obj); updated.save(function (err) { if (err) { handle_error(err) } else { console.log("Vehicle Updated"); } }); } }); } event_obj[0]和fresh_event_obj的结构是相同的,除了event_obj[0]具有_id和__v而“普通”对象没有。 当我运行_.merge这两个,甚至我自己的recursion函数,只是将值从后者复制到前者,尽pipefresh_event_obj具有所有新值,但updated对象中没有任何内容与event_obj[0]不同。 有没有人有任何想法我做错了? […]

节点大数据处理

我有500个mongodb数据库,我需要连接所有的数据库,并根据条件检查收集logging,然后logging。 一种方法是像这样使用循环和操作数据库: for(var i=0; i<databases.length;i++){ //connect to database //find query // add record to array } 它会正常工作,但需要很长时间。 有没有其他方法可以优化的方式进行快速处理?

NodeJs的MongoDB嵌套查询 – 同步运行callback

我有一个像下面的代码块。 我无法find如何实现这一目标。 – 我有mongodb中的房间集合,此集合中的文档包括用户标识数组。 每个房间可以有多个用户。 – 所以我想find包含我的用户ID的房间里的用户名。 数据库集合: 客房{roomId:1,用户:[99,100]},{roomId:2,用户:[99,101]} 用户{_id:99,name:“Alex”},{_ id:100,name:“Harry”},{_ id:101,name:“Tom”} var userId = 99; var arrUserIds = []; var arrRooms = []; var strUserNames = ""; db.collection("rooms").find({"users.userId":userId}).toArray(function(err, rooms) { for (var i=0; i<rooms.length; i++) { arrUserIds = []; for(var j=0; j<rooms[i].users.length; j++){ arrUserIds.push(new BSON.ObjectID(rooms[i].users[j].userId)); } db.collection('users').find({"_id": {$in: arrUserIds}}).toArray(function(err, users) { strUserNames = users.map(function(elem){return […]

如何在angulars中的多个表单视图之间传递数据

我在angularjs中有一个多步骤的forms。 我使用ui-router在不同视图之间进行路由,ngResource用于将数据发送到mongodb。 我的问题是,我不能将表单的所有值直接发送到数据库,因为表单被拆分成多个视图。 当我用ng-submit提交表单时,只有那个视图的值被发送到数据库。 的index.html <body> <div ui-view></div> </body> 多个视图(register.html) <div class="row"> <div> <div id="form-container"> <div class="page-header"> <h2 class="text-center">Enter the following details</h2> <!– the links to our nested states using relative paths –> <!– add the active class if the state matches our ui-sref –> <div id="status-buttons" class="text-center link-colors"> <a ui-sref-active="active" ui-sref="/registration_form.signUp"><span>1</span> Setup</a> <a ui-sref-active="active" […]

如何阅读JavaScript框架文档?

来自.NET的世界,我有一个很难的JavaScript框架的文档。 我将以“Node.js MongoDB驱动程序API”为例。 有一个Collection对象,它有count()方法。 这里是它的链接: http : //mongodb.github.io/node-mongodb-native/2.0/api/Collection.html#count 从那里我看到count()需要三个参数: count(query, options, callback) 起初我以为我需要提供他们所有三个为了使用这种方法。 但是,在这个方法的示例代码中,我发现它有时只使用一个,有时只使用一个参数: // Perform a total count command collection.count(function(err, count) { test.equal(null, err); test.equal(4, count); // Peform a partial account where b=1 collection.count({b:1}, function(err, count) { test.equal(null, err); test.equal(1, count); db.close(); }); 在第一种情况下,它只用callback参数调用count(),而在第二种情况下它提供了options和callback 。 没有使用原始方法描述中所述的全部三个参数的示例。 我的问题是怎么能知道这样的事情? 我的意思是,如果在这个文件中没有例子,我怎么知道这是可能的? 另外我怎样才能确定,如果没有这样的例子覆盖的方法有其他一些可能的用法? 我知道,只提供一些参数来调用javascript函数是完全合法的,函数应该能够根据实现来处理它。 但作为API的消费者,我不想查看函数实现来确定我可以传递什么样的参数组合。 我觉得这个文档是不完整的(我拿这个mongodb驱动程序作为例子,但我碰到类似的问题与其他js框架文档)。 在阅读javascript文档时,是否应该有一些理由,试图理解不同框架的API,如何知道什么是可能的,什么是不是等…?

如何正确使用与Node.js Mongoose模型?

我试图用mongoose来控制我的数据库逻辑和交易。 我已经有了Schema定义,我正在导出这些模型。 不pipe怎样,当我尝试使用一个模型,它会失败,像一个消息: return mongoose.model('Report', reportSchema); } has no method 'find' return mongoose.model('Report', reportSchema); } has no method 'find' … 这是我的模型导出: module.exports = (function() { var mongoose = require('mongoose'), Schema = mongoose.Schema, ObjectId = Schema.ObjectId; var reportSchema = mongoose.Schema({ category: ObjectId, authorName: String, authorEmail: String, text: String, address: String, coordinates: { type: "Point", coordinates: [Number,Number] […]

如何做嵌套数组文件的mongoose聚合

我有一个Mongodb集合, 轮询与以下架构 { "options" : [ { "_id" : Object Id, "option" : String, "votes" : [ Object Id ] // object ids of users who voted },….. ] } 假设我有我想要发送这个信息的节点js中的用户的userId 。 我的任务是 (1)在上面的json对象(我​​使用mongoose)中包含一个额外的字段。 如 “myVote”:option._id 我需要findoption._id为其中 选项[someIndex] .votes包含userId (2)改变每个选项中现有的“票数”字段以表示特定选项的票数,如示例中所见 例: { "options" : [ { "_id" : 1, "option" : "A", "votes" : [ […]

Mongo / Mongoose – 通过部分文档查找

我有一组属性,都有地址。 "address" : { "street" : "5 Orange Drive", "city" : "Orlando", "state" : { "abbreviation" : "FL", "name" : "Florida" }, "zip" : "32822", "geo" : { "lat" : 28.519, "lng" : -81.304 } }, "address" : { "street" : "16 Main Street", "city" : "Tallahassee", "state" : { "abbreviation" : "FL", "name" : […]