小编Jua*_*rah的帖子

迭代所有Mongo数据库

我是MongoDB的新手,我无法找到我正在寻找的解决方案.

我想迭代所有mongo数据库并在每个数据库的每个集合上运行一些命令.我可以运行以下命令来获取所有数据库名称:

db.runCommand( { listDatabases: 1 } ).databases.forEach(function (db) {
    print ("db=" + db.name);
});
Run Code Online (Sandbox Code Playgroud)

但是如何在forEach循环中"切换"数据库以便我可以针对每个数据库运行查询?我想使用像use db.name循环内部的东西,但这不起作用.

mongodb mongo-shell mongodb-query

13
推荐指数
1
解决办法
7893
查看次数

Mongodb在没有_id字段的情况下插入doc

我是mongodb的新手.

  1. 我需要插入一个没有自动生成_id字段的doc.

  2. 我需要将字段Tenant_id设置为唯一,或者需要将"_id"字段更改为Tenant_id.

怎么做?

这样的事情

     Tenant
        {Tenant_id: 123, Tenant_info: ...}
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-java mongodb-query

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

升级到PyMongo 3.0导致ServerSelectionTimeoutError

我最近将Bottle + uWSGI + Nginx应用程序升级到MongoDB 3.0.2.它与PyMongo 2.8一起工作正常,但今天我通过运行以下命令升级到PyMongo 3.0:

pip install --upgrade pymongo
Run Code Online (Sandbox Code Playgroud)

我没有对代码进行任何其他更改,但现在我不断收到以下错误.

File "/pymongo/cursor.py", line 968, in __next__ if len(self.__data) or self._refresh():
File "/pymongo/cursor.py", line 905, in _refresh self.__read_preference))
File "/pymongo/cursor.py", line 812, in __send_message **kwargs)
File "/pymongo/mongo_client.py", line 716, in _send_message_with_response server = topology.select_server(selector)
File "/pymongo/topology.py", line 113, in select_server server_selection_timeout))
File "/pymongo/topology.py", line 93, in select_servers self._error_message(selector))
ServerSelectionTimeoutError: No servers found yet
Run Code Online (Sandbox Code Playgroud)

我用来连接数据库的功能如下:

def connect_db(db_name):
    global db
    host = "localhost"
    port = 27017
    connection = pymongo.MongoClient(host=host, port=port) …
Run Code Online (Sandbox Code Playgroud)

python nginx mongodb pymongo uwsgi

9
推荐指数
1
解决办法
2995
查看次数

Mongoose ODM:NumberInt 未定义

MongoDB 集合“test”包含一条记录:

{ "_id" : ObjectId("56f53cded3095c203024a884"), status : 0 }
Run Code Online (Sandbox Code Playgroud)

我通过 Node.js (Mongoose 驱动程序)连接到 mongo。定义该集合的架构:

"Test" : {
    status : { type : Number, default : 0 }
}
Run Code Online (Sandbox Code Playgroud)

字段“status”是一个二进制标志,只能存储 0 或 1 个数值。我想通过更新查询更改此标志:

test.update( { 'status' : 0 }, { $bit : { 'status' : { xor : NumberInt(1) } } }, function( err, result ) {
    if( err ) {
        console.log( 'err' );
    }
});
Run Code Online (Sandbox Code Playgroud)

Mongoose 未找到NumberInt()函数:

ReferenceError: NumberInt is not defined
Run Code Online (Sandbox Code Playgroud)

当我输入没有功能的简单数字“1”时NumberInt(),我没有任何更改或错误。

在 …

mongoose mongodb node.js

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

Mongorestore - 太多打开的文件 - mac os x

我试图将一个大数据库的转储导入我的本地mongodb实例.

不幸的是,我发现一个问题,对于其中一个导入的集合,mongo抛出异常,打开了太多文件.

我使用谷歌了解了互联网的强大知识,我找到了一些ulimit和launchctl的解决方案,但它们没有用.

最后我通过以下方式解决了问题:

  1. 我创建了/etc/launchd.conf文件并添加了以下这些行:

    limit maxproc 512 1024
    limit maxfiles 16384 32768
  1. 接下来,我在终端中执行以下行:

    sudo sysctl -w kern.maxfilesperproc=16384
    sudo sysctl -w kern.maxfiles=32768
  1. 最后我重新启动了操作系统.

问题不再发生,但我有疑问.如果有一些解决方案来限制mongorestore级别打开的文件数量?我不认为增加max打开文件的全局值是一个好方法.

macos mongodb

5
推荐指数
3
解决办法
4774
查看次数

在virtualenv中使用解释器时,IntelliJ IDEA 14无法识别Python内置类型

我在OSX上使用IntelliJ IDEA 14来处理使用虚拟环境的Python项目.该程序在终端和IDEA中使用run命令都运行良好,但它不能识别Python内置的类型和函数.

IDEA没有认识到Python内置的类型和功能

我创建了虚拟环境并按照以下步骤将其添加到我的项目结构中,根据我读过的帖子,它应该可以工作,但我无法弄清楚出了什么问题.

  1. 添加了Python venv作为Project SDK.

在<code>venv</code>在模块中添加Python 作为Python解释器.</li>
</ol>

<p><img rel=

  1. 确保适当的Python解释器是选定的SDK.

确保适当的Python解释器是选定的SDK.

  1. 这些是全球图书馆.

这些是全球图书馆

[更新]

根据以下评论之一,我从头开始重新创建虚拟环境.现在可以识别Python的内置类型,但是venv文件夹中的库不是.

导入模块时出错.

模块.

python intellij-idea virtualenv intellij-14

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

mongodb - 带有nodejs的上限集合

我正在尝试使用Node.js(使用本机MongoDB驱动程序)在MongoDB中设置和更新一些上限集合.我的目标是,在运行app.js时,将文档插入到上限集合中,并更新上限集合中的现有文档.这两个都在运行setInterval(),所以每隔几秒钟.

我的问题:

  1. 如果集合尚不存在,我想创建一个集合,但如果它确实存在,我想要将文档插入其中.检查这个的正确方法是什么?
  2. 对于上限集合,我是否应该在插入任何内容之前先显式创建它们?通常情况下,我相信您只需先将事物插入集合中,而无需先显式创建它们,但在这种情况下,我需要确保它们有上限.一旦存在上限集合,我知道如何在其中插入新文档,问题是我需要一些方法来处理第一次使用的应用程序(在新服务器上),其中集合尚不存在,我想要使用节点进行此创建,而不必跳转到mongo cli.
  3. 这里的诀窍是集合需要上限,所以我可以做类似的事情:db.createCollection("collectionName", { capped : true, size : 100000, max : 5000 } ).这将为我创建上限集合,但每次调用它时都会调用createCollection()而不是更新或插入 - 如果我调用createCollection(),一旦集合已经存在,它是否会完全覆盖现有集合?
  4. 另一种方法是使用以下方法将集合转换为上限集合:db.runCommand({"convertToCapped": "collectionName", size: 100000, max : 5000 });.这个问题是节点看不到runCommand()有效的函数而且它有错误.是否有其他东西我打算要求它让这个工作?它适用于mongo cli但不在节点内
  5. 您使用什么类型的查询来查找集合中的第一个文档?同样,在mongo cli中我可以使用db.collections.find()一些查询,但在节点内它表明它find()不是有效的函数
  6. 我如何使用collection.update()向现有文档添加一些新字段?让我们说文档是一些简单的对象,{key1: "value", key2: "value"}但我有一个包含的对象{key3: "value"}.当前文档中不存在键3,如何将其添加到当前存在的内容中?这与上面的#4有些相关,因为我不确定要传递什么,因为查询参数find()似乎不能很好地与节点一起使用.

javascript native mongodb node.js capped-collections

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

MongoDB $addToSet 与 $push(速度)

我在 MongoDB 的数据库中有 1.5 亿个文档的集合,我想为每个文档添加一个数组字段(关键字)

{ 
    Subject: "value1", 
    Object: "value2", 
    "keywords": [A,A,B,C,D]
} 
Run Code Online (Sandbox Code Playgroud)

所以我要添加元素的字段是“关键字”。我应该做addToSet(A)还是push(A)?我不关心重复项。所以上面的例子是正确的。但我只关心速度。哪个更快(时间方面)$addToSet$push

arrays time-complexity mongodb mongodb-query

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

从 MongoDB 中的数组中删除多个文档

我的文档包含一个数组,如:

{
    "differentialDiagnosis" : "IART/Flutter",
    "explanation" : "The rhythm.",
    "fileName" : "A115a JPEG.jpg",
    "history" : "1 year old with fussiness",
    "interpretationList" : [ 
        {
           "interpretations" : [
                ObjectId("54efe7c8d6d5ca3d5c580a22"), 
                ObjectId("54efe80bd6d5ca3d5c580a26")
            ]
        }, 
        {
            "interpretations" : [ 
                ObjectId("54efe80bd6d5ca3d5c580a26"), 
                ObjectId("54efe82ad6d5ca3d5c580a28")
             ]
        }
    ],
}
Run Code Online (Sandbox Code Playgroud)

我想删除所有出现的ObjectId("54efe80bd6d5ca3d5c580a26"),但我写了一个查询:

db.ekgs.update({'interpretationList.interpretations':ObjectId("54c09fb3581c4c8c218d1a40")}, {$pull:{ 'interpretationList.$.interpretations':{ ObjectId("54c09fb3581c4c8c218d1a40")}})
Run Code Online (Sandbox Code Playgroud)

仅删除第一次出现ObjectId("54efe80bd6d5ca3d5c580a26")

mongodb

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

MongoDB bash脚本

我正在使用Ubuntu 14.4和MongoDB 2.6.6.

我正在写一个bash脚本,我正在使用以下命令:

mongo cc --eval "printjson(db.cc_data.count())"
Run Code Online (Sandbox Code Playgroud)

得到收集的计数cc_data.我想保存变量中返回的计数,但我不能.救命?

谢谢.

bash ubuntu mongodb

2
推荐指数
1
解决办法
816
查看次数