首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongo shell脚本输出与Mongo-shell输出的差异

Mongo shell脚本输出与Mongo-shell输出的差异
EN

Stack Overflow用户
提问于 2015-10-09 16:34:59
回答 1查看 605关注 0票数 1

我在传递ObjectId时没有得到输出,即使在有匹配的地方,当我从mongo shell运行相同的命令时,它也可以工作。可能的问题是什么?

代码语言:javascript
复制
mongo myDB --eval 'db.myUserDocColl.find({"_id" : ObjectId("55fd20104ead737a83540a91")},{name:1,email:1,mobileNumber:1,"_id":0});'

输出为

代码语言:javascript
复制
MongoDB shell version: 3.0.2
connecting to: myDB
DBQuery: myDB.myUserDocColl -> { "_id" : ObjectId("55fd20104ead737a83540a91") }
EN

回答 1

Stack Overflow用户

发布于 2015-10-09 17:43:23

shell的interactive and scripted mode之间存在差异。

在shell中运行JavaScript时,find()查询返回的游标为automatically iterated

db.collection.find()方法返回一个游标。要访问文档,需要迭代游标。但是,在mongo shell中,如果没有使用var关键字将返回的游标赋给变量,那么游标将自动迭代20次,以打印结果中的前20个文档。

如果在脚本模式下运行相同的JavaScript (即通过--eval等命令行选项传递),则需要显式迭代游标并使用print()printjson()打印结果

代码语言:javascript
复制
mongo myDB --quiet --eval 'printjson(db.myUserDocColl.find({"_id" : ObjectId("55fd20104ead737a83540a91")},{name:1,email:1,mobileNumber:1,"_id":0}).toArray())'

我还在这个示例命令行中添加了--quiet选项,它删除了脚本通常不需要的额外输出(例如,shell版本头和“连接到...”消息)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33033583

复制
相关文章

相似问题

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