如何打印 cursor.ForEach 中的文档?
How can I print document in cursor.ForEach?
我在某些集合上将一些简单的游标定义为 find()。
cursor = db.students.find()
学生有以下架构:
"_id" : 19,
"name" : "Gisela Levin",
"scores" : [
{
"type" : "exam",
"score" : 44.51211101958831
},
{
"type" : "quiz",
"score" : 0.6578497966368002
},
{
"type" : "homework",
"score" : 93.36341655949683
},
{
"type" : "homework",
"score" : 49.43132782777443
}
]
我想迭代光标并打印文档。我这样尝试:
cursor.forEach(function(o){print(o)})
它只打印这个:
[object Object]
如果我将循环修改为 select 一些简单的 属性 它会起作用:
cursor.forEach(function(o){print(o._id)})
尽管如果我将其更改为打印乐谱,它会打印以下内容:
[object Object],[object Object],[object Object],[object Object]
在mongodbshell中有打印json文档的功能吗?
我不确定为什么 pretty
不能适用于您的情况。
如果您手动使用游标,则需要使用 printjson
函数
db.collection.find().forEach(printjson)
或以下带过滤器表达式
db.collection.find({}, { "scores": 1, "_id": 0 }).forEach(printjson)
如果您的结果集很小,您可以将其放在一个集合中,然后对其进行迭代。
List<org.bson.Document> resultList = (List<org.bson.Document>) mongoCollection.find()
.into(new ArrayList<org.bson.Document>());
resultList.forEach(doc -> printJson(doc));
而 printJson 是
public static void printJson(org.bson.Document doc) {
JsonWriter jsonWriter = new JsonWriter(new StringWriter(), new JsonWriterSettings(JsonMode.SHELL, true));
new DocumentCodec().encode(jsonWriter, doc,
EncoderContext.builder().isEncodingCollectibleDocument(true).build());
System.out.println(jsonWriter.getWriter());
System.out.flush();
}
我在某些集合上将一些简单的游标定义为 find()。
cursor = db.students.find()
学生有以下架构:
"_id" : 19,
"name" : "Gisela Levin",
"scores" : [
{
"type" : "exam",
"score" : 44.51211101958831
},
{
"type" : "quiz",
"score" : 0.6578497966368002
},
{
"type" : "homework",
"score" : 93.36341655949683
},
{
"type" : "homework",
"score" : 49.43132782777443
}
]
我想迭代光标并打印文档。我这样尝试:
cursor.forEach(function(o){print(o)})
它只打印这个:
[object Object]
如果我将循环修改为 select 一些简单的 属性 它会起作用:
cursor.forEach(function(o){print(o._id)})
尽管如果我将其更改为打印乐谱,它会打印以下内容:
[object Object],[object Object],[object Object],[object Object]
在mongodbshell中有打印json文档的功能吗?
我不确定为什么 pretty
不能适用于您的情况。
如果您手动使用游标,则需要使用 printjson
函数
db.collection.find().forEach(printjson)
或以下带过滤器表达式
db.collection.find({}, { "scores": 1, "_id": 0 }).forEach(printjson)
如果您的结果集很小,您可以将其放在一个集合中,然后对其进行迭代。
List<org.bson.Document> resultList = (List<org.bson.Document>) mongoCollection.find()
.into(new ArrayList<org.bson.Document>());
resultList.forEach(doc -> printJson(doc));
而 printJson 是
public static void printJson(org.bson.Document doc) {
JsonWriter jsonWriter = new JsonWriter(new StringWriter(), new JsonWriterSettings(JsonMode.SHELL, true));
new DocumentCodec().encode(jsonWriter, doc,
EncoderContext.builder().isEncodingCollectibleDocument(true).build());
System.out.println(jsonWriter.getWriter());
System.out.flush();
}