Как просмотреть поля документа в оболочке Монго? - PullRequest
18 голосов
/ 05 мая 2011

Есть ли способ выяснить поля / ключи в документе, находясь в оболочке Монго?В качестве примера, скажем, у нас есть такой документ (псевдокод):

{
    "message": "Hello, world",
    "from": "hal",
    "field": 123
}

Я бы хотел запустить команду в оболочке, которая возвращает список полей / ключей в этом документе.Например, что-то вроде этого:

> var message = db.messages.findOne()
> message.keys()
... prints out "message, from, field"

Спасибо!

Ответы [ 4 ]

56 голосов
/ 26 сентября 2014

Еще проще:

Object.keys(db.messages.findOne())
10 голосов
/ 05 мая 2011
Цикл

A for ... in должен помочь:

> var message = db.messages.findOne();
> for (var key in message) {
... print(key);
... }
4 голосов
/ 14 июля 2018

Другие ответы верны.

Однако, поскольку я совершенно новичок, я не понимаю, где и как должны выполняться указанные выше команды:

Ниже помогло, от мой github
Запустите ниже в командной строке (cmd для Windows):

// ------------
// 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]);
    }
});

// ------------
0 голосов
/ 06 ноября 2017

Чтобы получить список всех полей, используемых в коллекции в 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")

Я узнал, как это сделать здесь (блог GeoffTech)

Я запустил его из оболочки, чтобы распечатать вывод в консоли

mongo < nameOfYourFile.js 

или выведите вывод в текстовый файл:

mongo < nameOfYourFile.js > outputDir\nameOfYourOutputFile.txt

Я совершенно новичок в MongoDb, поэтому я надеюсь, что он действительно получает все поля независимо от использования в документах!

(я использую MongoDb в Windows 10, поэтому моя консоль может отличаться от вашей)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...