mongo 셸에서 문서 필드를 보는 방법은 무엇입니까?
mongo의 셸에 있는 동안 문서의 필드/키를 파악할 수 있는 방법이 있습니까?예를 들어, (의사 코드)와 같은 문서가 있다고 가정합니다.
{
"message": "Hello, world",
"from": "hal",
"field": 123
}
해당 문서의 필드/키 목록을 반환하는 명령을 셸에서 실행하려고 합니다.예를 들어, 다음과 같은 것이 있습니다.
> var message = db.messages.findOne()
> message.keys()
... prints out "message, from, field"
더욱 간편한 기능:
Object.keys(db.messages.findOne())
A for ... in
루프가 트릭을 수행해야 합니다.
> var message = db.messages.findOne();
> for (var key in message) {
... print(key);
... }
다른 답들은 맞습니다.
하지만 저는 완전히 새로운 사람이기 때문에 위의 명령어가 어디서 어떻게 실행되어야 하는지 이해하지 못했습니다.
밑에서 도와줬어, 내 깃허브에서.
Windows의 경우:명령 프롬프트(cmd)에서 이 코드를 실행합니다.
Mac 또는 Linux에서: 터미널 창에서 이 코드를 실행합니다.
// ------------
// start mongo client
mongo
// ------------
// list all databases
show dbs
// NOTE: assume one of the databases is myNewDatabase
// use the 'myNewDatabase' database
use myNewDatabase
// ------------
// show all collections of 'myNewDatabase' database
show collections
// NOTE: assume one of the collections is 'myCollection'
// show all documents of 'myCollection' collection
db.myCollection.find()
// ------------
// field keys
Object.keys(db.myCollection.findOne());
// values
db.myCollection.find().forEach(function(doc) {
for (field in doc) {
print(doc[field]);
}
});
// ------------
MongoDB에서 컬렉션에 사용되는 모든 필드의 목록을 얻으려면 다음과 같이 해야 합니다(마일리지는 다를 수 있습니다:).
다음 내용을 사용하여 .js 파일을 만듭니다.
use yourdbname
mr = db.runCommand({
"mapreduce" : "collectionName",
"map" : function() {
for (var key in this) { emit(key, null); }
},
"reduce" : function(key, stuff) { return null; },
"out": "collectionName" + "_keys"
})
db[mr.result].distinct("_id")
여기서 이 작업을 수행하는 방법을 알아냈습니다(지오프테크
콘솔에서 출력을 인쇄하기 위해 셸에서 실행했습니다.
mongo < nameOfYourFile.js
또는 출력을 텍스트 파일에 덤프합니다.
mongo < nameOfYourFile.js > outputDir\nameOfYourOutputFile.txt
저는 MongoDb에 완전히 익숙하지 않아서 문서 전체에서 사용에 관계없이 모든 필드가 실제로 제공되기를 바랍니다!
(저는 윈도우 10에서 MongoDb를 사용하고 있어서 제 콘솔이 당신의 콘솔과 다를 수 있습니다.)
컬렉션의 모든 문서에 일부 필드가 있는 것은 아니라도 컬렉션을 작성하지 않고 모든 필드를 가져오는 방법으로 이 작업을 수행할 수 있습니다.
return db.collectionName.aggregate( [
{ $project : { x : { $objectToArray : "$$ROOT" } } },
{ $unwind : "$x" },
{ $group : { _id : null, keys : { $addToSet : "$x.k" } } },
] ).toArray()[0].keys.sort();
이것은 또한 Mongo 쉘에 추가할 수 있는 편리한 것으로, 당신은 그것을 포함함으로써 할 수 있습니다..mongorc.js
홈 디렉토리의 파일:
Object.assign( DBCollection.prototype, {
getAllFieldNames() {
return db[ this._shortName ].aggregate( [
{ $project : { x : { $objectToArray : "$$ROOT" } } },
{ $unwind : "$x" },
{ $group : { _id : null, keys : { $addToSet : "$x.k" } } },
] ).toArray()[0].keys.sort();
},
} );
그러면 그냥 하면 됩니다.db.myCollection.getAllFieldNames()
셸을 사용할 때..
var task = db.task.find().next()
for (let key in task){print(key)}
언급URL : https://stackoverflow.com/questions/5900792/how-to-view-document-fields-in-mongo-shell
'programing' 카테고리의 다른 글
git reset의 실용적인 사용 -- 소프트? (0) | 2023.06.22 |
---|---|
스프링 부트 - 로깅을 끌 수 없음 (0) | 2023.06.22 |
'에 의해 하나의 '문서'를 제거하는 방법MongoDB의 공식 C# 드라이버를 사용하는 ID? (0) | 2023.06.22 |
스프링 부트 유닛 모듈이 자동 배선 구성 요소를 감지하지 못하는지 테스트하십시오. (0) | 2023.06.22 |
git branch -r을 실행할 때 "origin/HEAD"가 표시되는 이유는 무엇입니까? (0) | 2023.06.22 |