首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >mongo dbname --eval 'db.collection.find()‘不起作用

mongo dbname --eval 'db.collection.find()‘不起作用
EN

Stack Overflow用户
提问于 2011-09-09 02:28:52
回答 2查看 14.2K关注 0票数 20

为什么这是可行的:

# mongo dbname
MongoDB shell version: 1.8.3
connecting to: nextmuni_staging
> db.collection.find()
{ "foo" : "bar" }
> bye

虽然这不起作用:

# mongo localhost/dbname --eval 'db.collection.find()'
MongoDB shell version: 1.8.3
connecting to: localhost/dbname
DBQuery: dbname.collection -> undefined

它应该是完全一样的,不是吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-09 18:51:45

db.collection.find()的返回值是游标类型。在shell中执行此命令将创建一个光标,并向您显示第一页数据。你可以通过重复'it‘命令开始剩下的部分。

我认为在eval脚本执行期间使用的变量的作用域只在脚本的生命周期内(当然,数据可以持久化到集合中),所以一旦脚本终止,这些游标变量就不再存在,因此您可以发送另一个eval脚本来对数据进行分页。因此,您在shell会话期间获得的行为在eval脚本中不会真正起作用。

为了接近这个行为,你可以运行下面这样的命令:

mongo dbname --eval "db.collection.find().forEach(printjson)"

这表明该命令确实执行并生成了一个游标,然后可以迭代该游标将输出发送到stdout。

编辑:我想我想说的是,你发出的命令是有效的,只是输出不是你所期望的。

票数 24
EN

Stack Overflow用户

发布于 2017-01-10 23:37:26

在使用mongo --eval '...'编写脚本时,printjson函数涵盖了很多方面。您可以简单地包装您的调用,而不是链接.forEach

$ mongo --eval 'db.stats_data.stats()' db_name
MongoDB shell version: 2.4.14
connecting to: db_name
[object Object]

$ mongo --eval 'db.stats_data.stats().forEach(printjson)' db_name
MongoDB shell version: 2.4.14
connecting to: db_name
Tue Jan 10 15:32:11.961 TypeError: Object [object Object] has no method 'forEach'

$ mongo --eval 'printjson(db.stats_data.stats())' db_name
MongoDB shell version: 2.4.14
connecting to: db_name
{
    "ns" : "db_name.stats_data",
    "count" : 5516290,
    "size" : 789938800,
    "avgObjSize" : 143.20110073980882,
    "storageSize" : 1164914688,
    "numExtents" : 18,
    "nindexes" : 3,
    "lastExtentSize" : 307515392,
    "paddingFactor" : 1.0000000000000457,
    "systemFlags" : 1,
    "userFlags" : 0,
    "totalIndexSize" : 1441559616,
    "indexSizes" : {
        "_id_" : 185292688,
        "owner_id_key_idx" : 427678384,
        "onwer_metric_key_idx" : 828588544
    },
    "ok" : 1
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7352773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档