来自"传统"的开发背景,每当我看到PaaS NoSQL产品时,我都会感到畏缩.远离您的应用程序托管数据的想法根本感觉不对.但像MongoLab这样的PaaS提供商在这里并且看起来非常成功..所以我想,它必须工作......我应该考虑一下.
我正在使用NodeJS和MongoDB构建一个应用程序,并将在OpenShift上托管它.理想情况下,我有Web服务器和Mongo集群设置,我可以轻松地水平扩展它们...所有托管在OpenShift上.
在OpenShift上托管/扩展Mongo是否有意义?我应该使用像MongoLabs这样的PaaS吗?
更新:我在询问架构原因,为什么选择在PaaS类型的产品中托管数据,而不是在OpenShift等服务中托管数据.我在这里列出的具体服务是无关紧要的,因为它可以应用于其他托管服务,NoSQL数据库或PaaS提供商.
我有一个MongoDB的节点表达应用程序作为数据库.我想有一个seed.js文件,我可以运行它来填充数据库的初始数据.我在当地的机器上做这个没问题.我只是在我的seed.js文件中编写mongo命令并运行它:
$ mongo localhost:27017/myApp seed.js
Run Code Online (Sandbox Code Playgroud)
但是,当我将我的应用程序部署到Heroku(包括MongoLab)时,我不确定如何在那里播种数据.谷歌大部分时间都把我引向铁轨.
那么有没有一种简单的方法为Heroku MongoLab播种数据而无需编写脚本?
更新:如果我尝试使用heroku的MONGOLAB_URI运行它,我会收到错误.
$ mongo mongodb://heroku_xxxx:xxxxx.mongolab.com:xxx/heroku_xxxx seed.js
MongoDB shell version: 3.0.5
connecting to: mongodb://heroku_xxxxxxxx
2015-08-19T21:44:22.694+0100 E QUERY Error: More than one ':' detected. If this is an ipv6 address, it needs to be surrounded by '[' and ']'; heroku_xxxxxxxxxxxxx
at connect (src/mongo/shell/mongo.js:181:14)
at (connect):1:6 at src/mongo/shell/mongo.js:181
exception: connect failed
Run Code Online (Sandbox Code Playgroud) 我正在将 mLab 从 Heroku 迁移到 MongoDB Atlas。作为步骤之一,我想检查是否可以连接到新创建的集群。我将Robo3T(以前称为 Robomongo)用于 Heroku mLab 实例。但它不适用于 Atlas。从 URL 创建连接时出现以下错误:
Cannot connect to replica set "SampleProject"[cluster-abcd12ef-shard-00-00.a0b1c.mongodb.net:27017].
Set's primary is unreachable.
Reason:
Failed to initialize MongoWorker. Reason: connect failed
Run Code Online (Sandbox Code Playgroud)
试图调整设置,但那里的一切看起来都正确,就像 Heroku 一样,唯一的主机和端口不同。
我正在尝试开始使用playframework中的salat插件.我已经配置了数据库application.conf并添加了所有依赖项Build.scala并将salat添加到play.plugins文件中.我还没有在项目中添加任何代码,我只是按照github页面上的说明操作,然后尝试运行该项目.我收到以下错误消息
(Server started, use Ctrl+D to stop and go back to the console...)
[info] play - mongodb [default] connected at heroku_app4620908@ds031907.mongolab.com:31907/heroku_app4620908
[error] application -
! @6bchnaacn - Internal server error, for request [GET /] ->
play.api.Configuration$$anon$1: Configuration error [couldn't connect to [ds031907.mongolab.com/107.21.153.211:31907]]
at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:71) ~[play_2.9.1-2.0.3.jar:2.0.3]
at play.api.Configuration.reportError(Configuration.scala:258) ~[play_2.9.1-2.0.3.jar:2.0.3]
at se.radley.plugin.salat.SalatPlugin$$anonfun$onStart$1.apply(SalatPlugin.scala:105) ~[play-plugins-salat_2.9.1-1.0.8.jar:1.0.8]
at se.radley.plugin.salat.SalatPlugin$$anonfun$onStart$1.apply(SalatPlugin.scala:98) ~[play-plugins-salat_2.9.1-1.0.8.jar:1.0.8]
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194) ~[scala-library.jar:0.11.3]
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194) ~[scala-library.jar:0.11.3]
Caused by: com.mongodb.CommandResult$CommandFailure: command failed [listDatabases]: { "serverUsed" : "db-uri" , "errmsg" : "need … 使用Heroku上的免费帐户和MongoLab上的免费帐户(不使用Heroku插件),每个请求的响应时间大约为1000毫秒(单个用户,它只是我,仍然与所有请求相关,不仅仅是第一个请求很长的空闲时间).我已经从我自己的计算机+同样的免费MongoLab帐户进行了检查,我得到了相同类型的请求~168ms.虽然它仍然很高,但我想问一下Heroku.即使使用免费帐户,如此糟糕的响应时间也是合理的.付款时,响应时间会明显好转吗?
Mongoose,MongoDB(node.js)本机驱动程序.
你有什么想法我要检查什么?
对AngularJS 使用Restangular,继续从Mongolab获取对象对象.
我确定它与Promise有关,但不确定如何使用/实现这些来自旧的Java OO体验.
(旁注,就像Eloquent Javascript,一些书或资源有助于我理解'新'Javascript风格?)
小型网络应用程序适用于残疾学生,用于输入/编辑学生,更新他们放学后的时间,然后每周为他们的父母/看护人输出报告.
这是在弹出新表单时返回undefined的代码(AngularJS Boostrap UI模式)
我个人认为Restangular和文档是一个很好的补充,所以希望它不会劝阻别人 - 这只是我不太了解.
提前致谢
app.js ...
$scope.editStudent = function(id) {
$scope.myStudent = Restangular.one("students", id);
console.log($scope.myStudent);
}
Run Code Online (Sandbox Code Playgroud) 我将使用MongoLab将一个网站部署到Azure,但我有点困惑.
当我登录到MongoLab站点时,我得到一个Uri,但在Azure站点中,如果我点击连接字符串,我会得到另一个.Azure一个很长,没有空间放置用户和密码.
当我在主管理站点中选择它并点击Connection Info下面的按钮时,我得到Azure连接字符串.我在MongoLab网站上看到的另一个.
此外,我从Azure门户中制作了MongoLab数据库.
我在Azure中看到的连接字符串是这样的
mongodb://AzureAppServiceName:M.qKtufxLrRxv.1SwDBKelfkchdjCe08Cmv79lvTD2I-@ds035747.mongolab.com:port/DBName
而MongoLab网站中的那个是这样的:
mongodb://<dbuser>:<dbpassword>@ds035747.mongolab.com:port/DBName
我应该使用哪一个?
我想知道一个是在没有端口限制的情况下直接连接到MongoLab,例如开发,另一个是在部署站点时由于Azure基础结构中的内部网络限制而连接.
这种理解是否正确?
我试图在我的Golang应用程序中连接到mlab mongo数据库,但我总是'auth failed'.
如果我使用我的本地mongo,我没有问题(我的本地没有身份验证)
编辑:我确实在mLab中创建了一个数据库用户,我可以在RoboMongo中使用该用户登录
我的数据库包如下所示:
package database
import (
"os"
"fmt"
"sync"
"labix.org/v2/mgo"
"time"
)
type DB struct {
Database *mgo.Database
}
const (
MongoDBHosts = "mlabHost:mlabPort"
AuthDatabase = "mydatabase"
AuthUserName = "mlabUser"
AuthPassword = "mlabPassword"
)
var _init_ctx sync.Once
var _instance *DB
func New() *mgo.Database {
_init_ctx.Do(func() {
_instance = new(DB)
mongoDBDialInfo := &mgo.DialInfo{
Addrs: []string{MongoDBHosts},
Timeout: 600 * time.Second,
Database: AuthDatabase,
Username: AuthUserName,
Password: AuthPassword,
}
// Create a session which maintains a pool of socket …Run Code Online (Sandbox Code Playgroud) 我已经使用了聚合函数。
db.checkins.aggregate([
{$match: {checkinType: "Beacon",
"associationIds.organizationId":"af39bc69-1938-4149",
"checkinData.time": {"$gte": new Date("2018-01-18T18:30:00.000Z"),
"$lt": new Date("2018-01-19T18:30:00.000Z")}
}
},
{"$sort":{"checkinData.time":-1}},
{$group: {"_id":
{"orgId":"$asst.organizationId", "userId":"$asst.userId"},
"lastSeen":{"$first":"$checkinData.time"},
"firstSeen":{"$last":"$checkinData.time"},
}
},
{"$project":{"_id":1,"lastSeen":1, "firstSeen":1,
totalHourSpent:{$subtract: ["$lastSeen","$firstSeen"]}}},
])
Run Code Online (Sandbox Code Playgroud)
当我执行此查询mongo时,以毫秒为单位返回totalHourSpent,如下所示。
{
"_id" : {
"orgId" : "af39bc69-1938-4149-b9f7-f101fd9baf73",
"userId" : "34adb4a0-0012-11e7-bf32-cf79d6b423e9"
},
"lastSeen" : ISODate("2018-01-19T18:49:52.242+05:30"),
"firstSeen" : ISODate("2018-01-19T10:08:21.026+05:30"),
"totalHourSpent" : NumberLong("31291216")
},
{
"_id" : {
"orgId" : "af39bc69-1938-4149-b9f7-f101fd9baf73",
"userId" : "679416b0-3f88-11e7-8d27-77235eb1ba9b"
},
"lastSeen" : ISODate("2018-01-19T20:51:30.946+05:30"),
"firstSeen" : ISODate("2018-01-19T11:07:44.256+05:30"),
"totalHourSpent" : NumberLong("35026690")
},
Run Code Online (Sandbox Code Playgroud)
如何以小时为单位计算totalHourSpent。提前致谢。
我已经获得了托管在mlab上的数据库。我正在尝试将文件从数据库下载到我的计算机上。我该怎么办?我应该补充一点,我以前从未使用过mlab或MongoDB。我要做的就是下载某种格式的文件(例如JSON或CSV),然后使用我拥有的python脚本进行处理
我看到mongoexport命令可能会解决问题,但我不知道如何使用它。我应该在cmd上运行吗?在我的计算机上,该命令未被识别为命令,我需要下载什么来解决该问题?
我看到的另一件事是pymongo。如果有人知道一般如何使用pymongo或python导出数据,我希望听到它。