获取一个查询中所有文件的大小
是否有一种方法可以获取所有符合MongoDB Shell中某个查询的文档的大小? 我正在创建一个将使用mongodump的工具(请参阅我知道描述的Object.bsonsize方法>,但似乎它仅返回一个文档的大小. 解决方案 这是我发现的答案: var cursor = db.collection.find(...); //Add your query here. var size = 0; cursor.forEach( function(doc){ size += Object.bsonsize(doc) } ); print(size); 应非常准确地输出文档字节中的大小. 我已经两次运行了命令.第一次有141个215个文件,一旦被抛弃,总共约有108 MB.命令的输出与磁盘上的大小之间的差异为787字节. 我第二次运行命令时,有35 914 179个文档,一旦被丢弃,总共约有57.8 GB.这次,我的命令和磁盘上
20 2024-04-04
编程技术问答社区
通过mongo shell脚本将图像文件读入MongoDB文档'的二进制字段中
我想从Mongo Shell中读取MongoDB文档的二进制字段.我可以在Java和MongoDB Java驱动程序中这样做.但是,我希望能够使用Mongo Shell的Mongo脚本.这可能吗? 例如,我想这样做: d:\ mongo \ bin> mongo -shell myscript.js myscript.js如下: conn = new Mongo(); db = conn.getDB("mydb"); db.mycoll.remove(); db.mycoll.insert( { name : "LCD monitor", thumbnail : Binary(0, **cat("D:\\images\\lcdmonitor.jpg")**) } ); ,cat()方法的使用给出了" internationError:buffer太小(anon):1",因为cat()仅
10 2024-03-30
编程技术问答社区
如何在MongoDB shell中把NumberDecimal转换成Double?
我有一个文档,其中包含"测试"为NumberDecimal type { "_id" : ObjectId("5d1a202e476381c30cd995a4"), "test" : NumberDecimal("0.1") } 如何将"测试"字段从NumberDecimal转换为Double Double Double 我尝试执行 db.collection.find({"test": {$exists: true}}).forEach(function (x) { x.test = parseFloat(x.test); db.collection.save(x); }); 但不要解决此问题,因为它返回NAN 解决方案 小数类型不是JavaScript的本地,因此Shell中的数字数值是代表MongoDB中存储的BSON值的特殊包装器.如果要使用parseFloat(),则可以将数字确定转换为JSON,以访问字符串值.例如,在您的原始代码中
18 2024-03-30
编程技术问答社区
不能使用部分(...)来遍历元素
运行mongod 3.6并尝试使用此示例. 这是示例数据: > db.students2.find().pretty() { "_id" : 1, "grades" : [ { "grade" : 80, "mean" : 75, "std" : 8 }, { "grade" : 85, "mean" : 90, "std" : 6 }, { "grade" : 85, "mean" : 85, "std" : 8 } ] } { "_id" : 2, "grades" : [ { "gra
34 2024-03-04
编程技术问答社区
用相同的集合进行查询
我是MongoDB的新手,所以我不确定我是否正确地提出了我的问题. 我有一个数据,其中的数据如下: { "_id" : ObjectId("66666"), "Id" : 994, "PostType" : 1, "AnswerId" : 334, "CreationDate" : ISODate("1994-09-05T09:34:36.177+0000"), "Tags" : "test", "Parent" : null, } { "_id" : ObjectId("8888"), "Id" : 334, "PostTypeId" : 2, "AnswerId" : NaN, "CreationDate" : ISODate("20005-08-03T11:29:42.880+0000"), "ParentId" : 994 } 两个
如何在MongoDB中按楼层聚合
mongoDB聚合框架没有floor函数. 它只有简单的 arithmetic operators . 那么,如何使用它们组合floor函数? 解决方案 根据定义floor(number) = number - (number % step)我们可以组成我们的聚合公式: {$subtract: ["$number", {$mod: ["$number", ]}]} 其中step是数量级.首先,它使用$mod计算其余部分,然后用$subtract. 计算差异. 因此,将用户按age 全部数字为 db.users.aggregate( {$group: {_id: {$subtract: ["$age", {$mod: ["$age", 1]}] }}} ) 如果您想将10或1000的地板地板使用10或1000而不是1. 其他解决方案 由于MongoDB版本3.2有一个 $floor 功能,因此您可以简单地使用: db.u
16 2024-01-20
编程技术问答社区
mongodb服务器端javascript实际上是客户端?
我有大量的文档,我想提取一些统计信息.它需要每15分钟定期执行. 大多数统计数据都是基于文档的大小,因此我需要获取文档并计算其大小. 关于文档的大小,我的统计数据的输出只是一条具有一些统计数据的行. (我不是在获取整个集合,只是其中的一个子集,所以我无法使用MongoDB提供的集合统计数据) 我想要的是在服务器端进行此执行,并避免将所有文档传输到客户端(仅仅是因为我需要计算大小). 我正在用mongo shell执行它,确保我要连接到次级,并且此 mongo shell始终在远程计算机中运行,因此这是避免传输所有文档的主要原因通过网络. 阅读了Mongo Shell文档后,我期望它将其"服务器端"执行,但是它不是这样工作的,并且它与Mongo Shell在同一机器中执行(这是更多客户端 - 我认为的一侧比服务器侧). 我粘贴了代码的提取,以防万一它有所帮助: db.cache.find(query).forEach(function(obj) {
28 2023-08-29
编程技术问答社区
如何从Heroku调度器中运行mongo脚本?
我已经为我的Mongo数据库实现了JavaScript脚本.这个脚本称为 getMetrics.js ,我可以通过运行: mongo getMetrics.js 从我的计算机执行. 现在,我想每天一次自动执行该脚本.为此,我创建了一个heroku应用程序,然后添加了调度程序添加程序( https://devcenter.heroku.com/articles/scheduler ). 我的主要问题是,为了运行,我的任务将执行命令" mongo getMetrics.js",并且由于我没有在Heroku App中安装mongo命令. . 如何从Heroku运行此脚本? 非常感谢您的帮助. 解决方案 我在类似情况下做了以下操作: 下载linux https://wwwww.mongodb.com/ bin文件夹包含mongo二进制 使此二进制在您的Heroku实例中可用(例如,如果您使用git repo配置了heroku,请在脚本旁边检查此二进制文件
18 2023-08-21
编程技术问答社区
timeoutError-MongoServerSelectionError: connect ECONNREFUSED ::1:27017-[NodeJS + MongoDB]
免责声明:类似的主题没有为我的问题提供有效的解决方案! 重新启动MongoDB服务器(发生错误时它会保持运行) 在Windows上使用MongoDB服务器作为服务(手动启动) 通过在COMAND提示中击中Enter以建立默认连接(mongodb://127.0.0.1:27017/directConnection=true&serverSelectionTimeoutMS=2000 ) 称为NPM安装和NPM启动(我的依赖项在下面列出) 检查MongoDB是否正在运行 通过Windows资源监视器检查端口27017由Mongod.exe使用TCP占用,并且不受防火墙的限制 检查我不使用可能会干扰的VPN或代理连接. 然后我打开http://localhost:3000/我正在听(app.listen(3000);) 但是,我仍然会收到以下错误: const timeoutError = new error_1.MongoServerSelectionErr
52 2023-06-26
编程技术问答社区
Mongodb无法找到_id过长的对象
我有点奇怪的情况. i在集合" refs"中持续存在明确设置_id的对象. 因此,我有具有非常大的ID的对象. db.refs.find().sort({_id: -1}); // {_id: 9200000000165761625} // ... 但是,当我尝试在mongo shell中找到具有最大ID的对象时,它将什么都没有返回: db.refs.find({_id: 9200000000165761625}); // nothing 但是! db.refs.find({_id: 9200000000165761625}).count(); // return 1 这怎么会发生? 解决方案 我无法再现您的问题.我能够成功查询您指定的_id值. 确保在查询时,您将传递正确的收藏名称 其他解决方案 JavaScript当前仅具有单个数字类型Number,该数字类型Number表示所有值为64位浮点值. JavaScript的本地编
52 2023-06-22
编程技术问答社区
Mongo UUID类型03,而不是mongo shell中的04
mongodb uuid转换来自mongo shell type type 03,旧格式.我们如何使其与二进制格式的04类型一起使用? > db.foo.insert({"_id":1000,"key1":UUID("240003A09CEC456AB57B98FF8E0E45DB")}) WriteResult({ "nInserted" : 1 }) > db.foo.find({_id:1000}) { "_id" : 1000, "key1" : BinData(3,"JAADoJzsRWq1e5j/jg5F2w==") } > db.version() 3.4.2 从Java代码中,我们能够使用字节扣并插入为04二进制UUID,示例:bindata(4," xwcwwqivtfiektx9yl+2uq =="). 解决方案 您可以通过提取base64编码和提供它来直接将数据直接放入BinData()函数中: var t = BinData(4
36 2023-06-22
编程技术问答社区
使用mongo shell向mongodb插入大记录
我正在尝试将大的多边形阵列插入我的收藏中.我正在使用以下命令插入数据... db.geoPolygonData.insert({"polygonName":"location1", "polygons":{"type":"Polygon", coordinates:[[[ 17.60083012593064, 78.18557739257812], [ 17.16834652544664, 78.19381713867188], [ 17.17490690610013, 78.739013671875], [ 17.613919673106714, 78.73489379882812],[ 17.60083012593064, 78.18557739257812]]]}}); WriteResult({ "nInserted" : 1 }) 问题:当多边形数组大小太大时,无法将其粘贴到插入命令中. db.geoPolygonData.insert({"polygonNam
64 2023-06-22
编程技术问答社区
Mongo shell出现了 "选项多次出现 "的错误。
使用以下命令 mongo --username admin_user --password passw#ord^s --authenticationDatabase admin 我得到错误""错误解析命令行:选项的多个出现" - username". Mongo Shell 3.0.12的版本.有人可以告诉我这里怎么了吗? 解决方案 好的.我设法找到了这个问题.由于某种原因,目前的用户似乎没有权限蒙戈外壳.当我在开始时添加" sudo"时,它效果很好.
30 2023-06-22
编程技术问答社区
在BinData()中用hex代替base64--MongoDB
是否有一种方法可以将二进制值的十六进制,而不是base64发送到mongo中的bindata()? 解决方案 HexData(3,"00112233445566778899aabbccddeeff") 或 UUID("00112233445566778899aabbccddeeff") 都将导致: BinData(3,"ABEiM0RVZneImaq7zN3u/w==") ,另一方面: BinData(3,"ABEiM0RVZneImaq7zN3u/w==").hex() 将结果: 00112233445566778899aabbccddeeff 其他解决方案 仅使用HexData(subtype, hexstr) 其他解决方案 如果您的MongoDB驱动程序使用JavaScript,则应尝试BinData(3,"ABEiM0RVZneImaq7zN3u/w==").toString('hex'); 我找不到其他方法,因
30 2023-06-22
编程技术问答社区
MongoDB-如何只选择数字字符串/在mongo-shell中检查字符串是否为数字字符串
我有一个集合,其中字段是字符串,但是这些字符串可以在例如: 内部具有数字值 myObject:{ 示例:[ {示例:"单词",...}, {示例:"更多单词",...}, {示例:" 111",...}, {示例:" 4502",...} ... ] ... } 我如何查询" 111"和" 4502"以及字符串格式的任何其他数字值? 解决方案 您可以在查询对象中使用正则表达式来执行此操作: // Select docs where at least one examples element contains an example value // that's made up only of digits. db.test.find({'examples.example': /^\d+$/})
30 2023-06-22
编程技术问答社区
MongoServerSelectionError: connect ECONNREFUSED ::1:27017
当我尝试将我的应用与猫鼬连接到数据库时,我有问题.已经尝试了我在Google上找到的以下解决方案: 在Windows上重新启动MongoDB服务 用CMD手动打开DB,位于MongoDB的bin文件上 但是我无法解决.谁能帮我吗? 这是我的index.js const { MongoClient } = require('mongodb') const url = 'mongodb://localhost:27017'; const database = 'e-comm' const client = new MongoClient(url); async function getData() { let result = await client.connect(); let db = result.db(database); let collection = db.collection('products'); let respon
60 2023-06-22
编程技术问答社区
无法通过mongo shell连接到mongodb atlas
我已经检查了其他类似的帖子,但对我的案件没有任何作用. 我在连接到MongoDB Atlas之前先升级了Mongo Shell,从中我创建了一个免费的沙盒数据库.我将其用于以下连接,这是由Atlas提供的. mongo "mongodb+srv://cluster0-z2lf6.mongodb.net/test" --authenticationDatabase admin --username --password 数据库用户的图像: 数据库概述的屏幕截图: 这些是数据库的细节: 但是,终端显示此内容(我只包含大约15行,其余的是重复.): MongoDB shell version v3.6.0 connecting to: mongodb+srv://cluster0-z2lf6.mongodb.net/test 2017-12-24T14:39:42.806+0800 I NETWORK [thread
96 2023-06-22
编程技术问答社区
mongosh是一个有效的命令,但没有找到mongo
我安装了MongoDB社区6.0.0. 找不到命令mongo. 命令mongosh正在工作. mongosh --version 1.5.4 解决方案 根据官方文件, mongo壳已在mongodb v5.0中删除.替换为mongosh. 当您使用mongodb v6.0时,mongo在您的版本中弃用. 其他解决方案 您需要将路径添加到" mongo"的路径中. export PATH=$PATH:/usr/local/mongodb/bin
26 2023-06-22
编程技术问答社区
RoboMongo不能使用数组过滤器?
以下来自" 如何更新ISO日期的集合和增加时间". 似乎Robomongo无法使用数组过滤器执行查询: 如果在通过mongo shell执行时找到同一查询: > db.collection.update({ ... "results.score": { ... "$exists": true ... } ... }, { ... "$mul": { ... "results.$[result].score": 10 ... } ... }, { ... "arrayFilters": [{ ... "result.score": { ... "$exists": true ... } ... }], ... "multi": true ... }) WriteResult({ "nMatched" : 1, "nUpserted
40 2023-06-22
编程技术问答社区
MongoDB将字符串类型转换为浮点数类型
按照此处的建议, mongodb:如何更改字段的类型?我尝试更新集合以更改字段及其值的类型. 这是更新查询 db.MyCollection.find({"ProjectID" : 44, "Cost": {$exists: true}}).forEach(function(doc){ if(doc.Cost.length > 0){ var newCost = doc.Cost.replace(/,/g, '').replace(/\$/g, ''); doc.Cost = parseFloat(newCost).toFixed(2); db.MyCollection.save(doc); } // End of If Condition }) // End of foreach 完成上述查询后,当我运行以下命令 时 db.MyCollection.find({"ProjectID"
66 2023-06-22
编程技术问答社区