как mongodb хранит и управляет метаданными?

#mongodb #storage

#mongodb #Хранение

Вопрос:

как mongodb хранит и управляет метаданными?

например, я хочу знать, сколько полей в коллекции или сколько коллекций в БД.

я могу использовать show collections для отображения коллекций, но я не знаю, как они хранятся в mongodb в виде документа?

как mongodb хранит и управляет метаданными?

например, я хочу знать, сколько полей в коллекции или сколько коллекций в БД.

я могу использовать show collections для отображения коллекций, но я не знаю, как они хранятся в mongodb в виде документа?

Комментарии:

1. Да, большую часть такой информации вы найдете в базе данных config

Ответ №1:

MongoDB хранит свои коллекции в файлах в настроенной папке данных. Формат данных в коллекциях — BSON (двоичный JSON). MongoDB ориентирован на документы, поэтому в каждом документе могут быть разные поля. Каждый документ представляет собой хорошо отформатированный JSON, тогда документ содержит метаданные, хранящиеся внутри него. Например:

 {
    "_id":{"$oid":"5fbcec5b0f751ebbc4d46516"},
    "health":"green",
    "status":"open",
    "pri":1,
    "rep":2
}
 

Метаданные поля хранятся в самом документе.
Тип поля выводится как JSON: с кавычками — строка, без кавычек — число.

Внутри объекты Date хранятся в виде 64-разрядного целого числа со знаком, представляющего количество миллисекунд, прошедших с эпохи Unix (1 января 1970 года).). Вы можете записать объект Date, используя метод new Date(string) .

Комментарии:

1. На самом деле, я хочу знать метаданные коллекций и баз данных, а не документов. Как я могу запросить их?

2. В оболочке нет методов для запроса этой информации. Фактически, парадигма в MongoDB заключается в том, что приложение управляет схемой, поэтому информация о схеме должна быть в вашем приложении, а не в вашей БД. Если вам нужна фиксированная схема, управляемая ядром базы данных, поэтому MongoDB делает неправильный выбор.

3. Показать коллекции перечислите ваши коллекции в текущей базе данных. Чтобы перечислить их из приложения, вы можете использовать метод getCollectionNames() . Кроме того, вы можете использовать метод getCollectionInfos(), который возвращает некоторую информацию о коллекциях, такую как тип коллекции, индекс и параметры, но он не показывает вам схему, потому что может отличаться для каждого документа.