标签: mlab

MongoDB索引无法帮助查询多键索引

我有一组定义了多键索引的文档.但是,对于43K文档,查询的性能相当差.这个查询的〜215ms被认为是差的吗?如果nscanned是43902(等于集合中的文档总数),我是否正确定义了索引?

文献:

{
    "_id": {
        "$oid": "50f7c95b31e4920008dc75dc"
    },
    "bank_accounts": [
        {
            "bank_id": {
                "$oid": "50f7c95a31e4920009b5fc5d"
            },
            "account_id": [
                "ff39089358c1e7bcb880d093e70eafdd",
                "adaec507c755d6e6cf2984a5a897f1e2"
            ]
        }
    ],
    "created_date": "2013,01,17,09,50,19,274089",
}
Run Code Online (Sandbox Code Playgroud)

指数:

{ "bank_accounts.bank_id" : 1 , "bank_accounts.account_id" : 1}
Run Code Online (Sandbox Code Playgroud)

查询:

db.visitor.find({ "bank_accounts.account_id" : "ff39089358c1e7bcb880d093e70eafdd" , "bank_accounts.bank_id" : ObjectId("50f7c95a31e4920009b5fc5d")}).explain()
Run Code Online (Sandbox Code Playgroud)

说明:

{
    "cursor" : "BtreeCursor bank_accounts.bank_id_1_bank_accounts.account_id_1",
    "isMultiKey" : true,
    "n" : 1,
    "nscannedObjects" : 43902,
    "nscanned" : 43902,
    "nscannedObjectsAllPlans" : 43902,
    "nscannedAllPlans" : 43902,
    "scanAndOrder" : false,
    "indexOnly" : false,
    "nYields" : 0,
    "nChunkSkips" : 0, …
Run Code Online (Sandbox Code Playgroud)

database performance mongodb mongoengine mlab

6
推荐指数
1
解决办法
1757
查看次数

MongoDB - 命令失败,错误代码为13`未经*****授权执行此命令`

因此,由于一些奇怪的原因,我的用户没有被授权在krimson数据库中写任何东西.数据库连接成功,但授予用户写入数据库的访问权限未按预期工作.

完全错误

Caused by: com.mongodb.MongoCommandException: Command failed with error 13: 'not authorized on krimson to execute command { findandmodify: "users", query: { _id: "_id" }, fields: {}, sort: {}, new: true, upsert: true, update: { $i
nc: { _id: 1 } } }' on server ds037395.mongolab.com:37395. The full response is { "ok" : 0.0, "errmsg" : "not authorized on krimson to execute command { findandmodify: \"users\", query: { _id: \"_id\" }, fields: {}, sort: {}, new:
 true, upsert: true, update: …
Run Code Online (Sandbox Code Playgroud)

java mongodb mlab

6
推荐指数
1
解决办法
1万
查看次数

MongoError:getaddrinfo ENOTFOUND undefined undefined:27017

所以我正在努力通过Manning的Getting Mean书并遵循第5章中的步骤我试图在Mongolab上使用db作为Heroku的附加组件.当我运行此代码(本地和Heroku)时,它返回此错误:

MongoError:getaddrinfo ENOTFOUND undefined undefined:27017

这是我目前的代码:

var mongoose = require('mongoose');

var dbURI = "mongodb://localhost/loc8r";
if (process.env.NODE_ENV === 'production') {
    dbURI = process.env.MONGOLAB_URI;
}
mongoose.connect(dbURI);
Run Code Online (Sandbox Code Playgroud)

疑难解答我从终端启动了应用程序:

NODE_ENV=production MONGOLAB_URI=/*my mongo uri here*/
Run Code Online (Sandbox Code Playgroud)

它本地运行良好.所以我不确定问题的来源.有关排除错误的任何建议吗?

heroku mongoose mongodb mlab

6
推荐指数
5
解决办法
2万
查看次数

heroku给我的方法不允许

好吧,所以我已经解决了这个问题几个小时了,不知道如何解决这个问题,因为我只是一个新手.我正在跟随Colt Steele的一个名为WEBDEVBOOTCAMP的UDEMY课程.在部署部分,每次使用Heroku部署时,这都会给我一个"不允许的方法".我一直在从头开始关注柯尔特的方式,这就是为什么我想知道它是怎么回事.

请帮忙.


顺便说一句,这些是我收到的heroku日志:

2017-08-07T21:45:10.990742+00:00 heroku[web.1]: Starting process with command `npm start`
2017-08-07T21:45:14.881336+00:00 app[web.1]: 
2017-08-07T21:45:14.881350+00:00 app[web.1]: > v1@1.0.0 start /app
2017-08-07T21:45:14.881352+00:00 app[web.1]: 
2017-08-07T21:45:14.881351+00:00 app[web.1]: > node app.js
2017-08-07T21:45:16.594550+00:00 app[web.1]: Warning: connect.session() MemoryStore is not
2017-08-07T21:45:16.594555+00:00 app[web.1]: designed for a production 
environment, as it will leak
2017-08-07T21:45:16.594556+00:00 app[web.1]: memory, and will not scale past a single process.
2017-08-07T21:45:16.610398+00:00 app[web.1]: (node:17) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0, use `openUri()` instead, or set the `useMongoClient` option if using `connect()` …
Run Code Online (Sandbox Code Playgroud)

heroku node.js express mlab

6
推荐指数
2
解决办法
9684
查看次数

Node.js config.yaml 中 Heroku 环境变量的语法?

我尝试过使用:

db:
  uri: process.env.MONGOLAB_URI
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。(编辑:事实上,这只返回“process.env.MONGOLAB_URI”的字符串)我也尝试过:

<%= ENV['MONGOLAB_URI'] %>
Run Code Online (Sandbox Code Playgroud)

但我在一篇关于 ruby​​ 应用程序中的 yaml 的文章中看到了这一点(现在找不到链接)。

正确的语法是什么?

yaml heroku node.js mlab

5
推荐指数
1
解决办法
1679
查看次数

MongoLab与Azure表存储

为此示例获取100gb数据库:

Azure存储成本:6.05英镑/米AWS上的MongoLab,1节点成本:153.18英镑/米

我错过了什么吗?计算错误了吗?有人可以在这里为我解决问题吗?我更喜欢使用MongoLab,因为我非常喜欢node/mongoDB.但是,与表存储一起使用它似乎是一种更具成本效益的解决方案.

我知道Key/Value和Document store之间的区别,我更喜欢后者.

azure-table-storage mlab

5
推荐指数
1
解决办法
1972
查看次数

没有创建Mongoose复合索引(太长)

我在MongoDB中的一个模式上创建多个复合索引时遇到了一些问题.使用MongoLab时,我知道由于命名问题,一些索引在它们太长时就不会创建.所以我怀疑这可能是为什么有些人没有创建的原因

var Schema = new mongoose.Schema({ ... });

// Created
Schema.index({
    one: 1,
    three: 1
});

// Not Created
Schema.index({
    one: 1,
    two: 1,
    three: 1,
    four: 1,
    five: 1,
    six: 1,
    seven: 1,
    eight: 1,
    nine: 1,
    ten: 1
});
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js mlab

5
推荐指数
1
解决办法
457
查看次数

管道阶段规范对象必须包含一个带有php mongo聚合的字段

我正在尝试使用聚合与项目,匹配和排序,但我得到一个例外(MongoResultException确切地说)说

exception: A pipeline stage specification object must contain exactly one field.

当我没有使用排序和限制时它工作正常,但我需要它们.我不使用的原因是find()因为我在某处读到它可以提高性能.请帮忙

$query = array(.... //An actual query that works with find()
$collection = $this->db->CollectionName;
            $project = array(
                '$project'  => array(
                    'Field1'    => 1,
                    'Field2'=> 1,
                    'Field3'=> 1,
                    'Field4'      => 1
                )
            );
            $match = array( '$match'=>$query);
            $sort = array('Field3' => -1, 'Field4'=>-1);
            $limit = array('$limit' => 100);


            $result = $collection->aggregate(array($match,$project,$sort,$limit));
            return $result;
Run Code Online (Sandbox Code Playgroud)

php mongodb mlab mongodb-query

5
推荐指数
1
解决办法
4708
查看次数

使用 mongoose 连接到 Mlab

嗨,我正在尝试建立一个简单的联系

mongoose.connect('mongodb://JFalcon:john2522@ds119476.mlab.com:19476/hidonshabat', {useMongoClient: true}, function(err){
    if(err) {
        console.log('Some problem with the connection ' +err);
    } else {
        console.log('The Mongoose connection is ready');
    }
})
Run Code Online (Sandbox Code Playgroud)

如您所见,这是网址!请帮我

mongodb node.js mlab

5
推荐指数
1
解决办法
6482
查看次数

MongoDB 查询返回 null,即使它在从 mlab 迁移到 mongoDB atlas 后在集合中可用

我正在将数据库从 Mlab 迁移到 MongoDB Atlas。我们必须将 mongodb 的 npm 版本升级到3.4.1MongoDB atlas 数据库版本4.2.5

连接功能已按照此答案中所述进行了更新。但是在将 npm 版本升级到3.4.1findOne 后,即使文档在集合中可用,findOne 查询也会返回空值。这是与 findOne 查询相关的代码部分,

  db.collection('organisations').findOne({ _id: database.ObjectID(orgState) })
    .then((activeOrganisation) => {
      console.log(activeOrganisation);
      data.activeOrganisation = activeOrganisation;
      callback(null, activeOrganisation);
    }, (error) => {
      callback(error, null);
    });
Run Code Online (Sandbox Code Playgroud)

因此我想知道数据库连接是否有问题,因此我使用运行db.serverConfig.isConnected(),db.databaseName和进行了测试db.listCollections().toArray()。返回isconnectedtrue和返回的数据库名也是正确的。但db.listCollections().toArray()返回一个空数组,这意味着我的数据库中没有不能的集合。

然后我尝试findOneAndUpdate查询只是为了检查会发生什么。这是它的相关代码,

db.collection('users').findOneAndUpdate(
        { emails: { $elemMatch: { email: "rajitha1591@outlook.com" } } },
        { $addToSet: { unsubscribedEmails: "models" } }) …
Run Code Online (Sandbox Code Playgroud)

migration mongodb node.js mlab mongodb-atlas

5
推荐指数
1
解决办法
1808
查看次数