programing

mongo 스크립트로 파일 쓰기 작업을 수행하시겠습니까?

oldcodes 2023. 5. 29. 11:09
반응형

mongo 스크립트로 파일 쓰기 작업을 수행하시겠습니까?

mongojs 스크립트에서 파일에 쿼리 결과를 쓸 수 있습니까?저는 많은 검색을 해봤지만 해결책을 찾지 못했습니다.

ex:-

cursor = db.users.find();

while(cursor.hasNext()) {
  cursor.next();
  // writing the cursor output to file ????<br/>
}

인쇄한 다음 출력을 리디렉션할 수 있습니다.

script.js:

cursor = db.users.find();
while(cursor.hasNext()){
    printjson(cursor.next());
}

그런 다음 스크립트를 실행하고 출력을 파일로 리디렉션합니다.

mongo --quiet script.js > result.txt

http://www.mongodb.org/display/DOCS/Scripting+the+shell 단락 "스크립트 작성과 대화형/인쇄의 차이"

./mongo server.com/mydb --quiet --eval "db.users.find().forEach(printjson);" > 1.txt

mongo 쿼리 결과를 로컬 파일에 써야 할 때마다 일반적으로 사용합니다.writeFile(pathToFile, stringContents)기능.

예: 등록된 모든 사용자의 이메일을 빨리 찾아서 마케팅 부서에 있는 친구 Jim에게 보내야 한다고 가정해 보겠습니다.

$ mongo mongodb://my-fancy-mongo-server --ssl -u fancy_username -p fancy_password 
successfully connected to my-fancy-mongo-server!
> emails = db.users.distinct('email_address')
> writeFile("jims_email_list.json", tojson(emails))

아니면 짐이 CSV 파일을 기대한다면,

$ mongo mongodb://my-fancy-mongo-server --ssl -u fancy_username -p fancy_password 
successfully connected to my-fancy-mongo-server!
> emails = db.users.distinct('email_address')
> writeFile("jims_email_list.csv", emails.join("\n"))

이제 짐에게 이메일 목록을 보내고 하루를 저장할 수 있습니다!

주의해야 할 중요한 것들을 위하여.writeFile함수:

  1. 두 번째 인수는 문자열이어야 합니다.
  2. 첫 번째 인수는 존재하지 않는 파일이어야 합니다. 그렇지 않으면 오류가 발생합니다.

다음을 사용하여 기간 루프를 건너뛸 수 있습니다.forEach():

db.users.find().forEach(printjson);

범용 언어(Python, Ruby, Java 등)에 Mongo 드라이버 중 하나를 사용하고 CSV 등과 같은 형식으로 결과를 파일에 쓰는 것이 더 간단하지 않을까요?

업데이트: mongodump에 대한 설명서에 따르면 쿼리를 사용하여 컬렉션을 내보낼 수 있습니다.

$ ./mongodump --db blog --collection posts
-q '{"created_at" : { "$gte" : {"$date" : 1293868800000},
                      "$lt"  : {"$date" : 1296460800000}
                    }
    }'

그러나 해당 컬렉션을 MongoDB로 다시 가져와 작업하거나 mongoexport를 사용하여 동일한 쿼리 플래그를 사용하여 JSON 또는 CSV로 내보내야 합니다.-q) 로서mongodump.

구별하기 위해서는 다음과 같은 내용을 가진 script.js 파일을 만들어야 합니다.

mongo = new Mongo("localhost");
doctor = mongo.getDB("doctor");
users = doctor.getCollection("users");
cities = users.distinct("address.city");
printjson(cities);

그런 다음 콘솔 실행:

mongo --quiet script.js > result.txt

언급URL : https://stackoverflow.com/questions/8971151/file-write-operations-in-mongo-script

반응형