programing

mongodb 공백 없이 json을 인쇄합니다. 예를 들어, 예쁜 json이 아닙니다.

cafebook 2023. 7. 2. 20:58
반응형

mongodb 공백 없이 json을 인쇄합니다. 예를 들어, 예쁜 json이 아닙니다.

저는 mongodb 2.2.0을 사용하고 있으며 json을 한 줄로 인쇄하려고 합니다.printjson()또는find().pretty()즉, 명령을 실행하는 것만으로 완료된 json 형식으로 나열된 문서가 필요합니다.db.collection.find().limit(10)하지만 저는 다음과 같이 자바스크립트 파일의 커서를 사용하여 그것을 완료해야 합니다.

var cursor = db.collection.find().sort({_id:-1}).limit(10000);
while(cursor.hasNext()){
    //printNonPrettyJson(cursor.next()); //How???!
}

print()그 일을 하는 것이 아니라, 그것은 단지 물체 식별자에 대한 횡설수설을 출력할 뿐입니다.

제가 이것을 원하는 이유는 콘솔에서 Javascript 파일을 호출한 다음 다음과 같이 파일에 출력을 전달하기 때문입니다.

mongo mydatabase myjsfile.js >> /tmp/myoutput.txt

편집: 다음과 같은 출력을 원합니다.

> db.zips.find().limit(2)
{ "city" : "ACMAR", "loc" : [ -86.51557, 33.584132 ], "pop" : 6055, "state" : "A
L", "_id" : "35004" }
{ "city" : "ADAMSVILLE", "loc" : [ -86.959727, 33.588437 ], "pop" : 10616, "stat
e" : "AL", "_id" : "35005" }
>

다음과 같은 것이 아닙니다.

> db.zips.find().limit(2).pretty()
{
        "city" : "ACMAR",
        "loc" : [
                -86.51557,
                33.584132
        ],
        "pop" : 6055,
        "state" : "AL",
        "_id" : "35004"
}
{
        "city" : "ADAMSVILLE",
        "loc" : [
                -86.959727,
                33.588437
        ],
        "pop" : 10616,
        "state" : "AL",
        "_id" : "35005"
}
>

다른 모든 방법에 의해 제시된 바와 같이.다시 한번, 저는 커서 객체를 사용하여 이것이 필요합니다.

var cursor = db.collection.find().sort({_id:-1}).limit(10000);
while(cursor.hasNext()){
    printjsononeline(cursor.next());
}

해라print(tojson())MongoDB 문서에 커서를 사용하여 인쇄하는 예가 있습니다.

    var myCursor = db.inventory.find( { type: 'food' } );
    var myDocument = myCursor.hasNext() ? myCursor.next() : null;

    if (myDocument) {
        var myItem = myDocument.item;
        print(tojson(myItem));
    }

JS 해킹은 언제든지 할 수 있습니다.

> db.tg.find().forEach(function(doc){ print(tojson(doc).replace(/(\r\n|\n|\r|\s)/gm, '')); })
{"_id":ObjectId("511223348a88785127a0d13f"),"a":1,"b":1,"name":"xxxxx0"}

예쁘지는 않지만 효과가 있습니다.

"sort" 및 "limit"를 사용하여 결과를 사용자 정의할 수 있습니다.mongoexport --type=csv를 사용하면 결과를 xls 또는 한 줄로 읽을 수 있는 csv 파일로 인쇄할 수 있습니다.

각 항목에 {}개의 대괄호가 있지만 다른 항목이 없는 경우 정규식을 사용하여 대괄호에서 분할합니다.

그러면 {}(으)로 분할됩니다.{...}개 항목입니다.그러나 중첩된 {}이(가) 있으면 작동하지 않습니다.

var res = s.match(/\{(.|\s)*?\}/g);
if(res) for(var x=0;x<res.length;x++){
    // print  res[x].replace(/\s+/g," ");// w/o spaces
}

명령줄에서 사용하는 내용은 다음과 같습니다.

mongoexport -d $dbname -c $collection -q '{ "id" : -1 }'

/sort/limit 할 수 있는지 확실하지 않음

언급URL : https://stackoverflow.com/questions/14752450/mongodb-print-json-without-whitespace-i-e-unpretty-json

반응형