В моей коллекции mongoDB есть несколько документов, которые содержат несуществующих полей.Возврат «ноль» для несуществующих полей
Я хочу, чтобы эти поля были «нулевыми» при извлечении документов из коллекции.
Есть ли method
для этого?
В моей коллекции mongoDB есть несколько документов, которые содержат несуществующих полей.Возврат «ноль» для несуществующих полей
Я хочу, чтобы эти поля были «нулевыми» при извлечении документов из коллекции.
Есть ли method
для этого?
Поскольку MongoDB
является document based DB
, у вас нет общей структуры таблицы, такой как SQL
. Один документ BSON
(документ mongo) может иметь в целом различный контент.
Вы можете создать массив, который будет использоваться для сравнения базы.
MongoDB не имеет схемы не потому, что ориентирован на документ. Он не имеет одного, потому что он запрограммирован в ядре как гибкий в плане схемы. Документарные базы данных могут принимать базовую схему, как и любую БД, но они выбирают, что вам нужно реализовать ее в приложении. – Sammaye
Чтобы быть верным - MongoDB имеет динамические схемы, обычно идея использовать MongoDB - это ситуации, где необходимо иметь различия. Чтобы сделать отдельный документ, это хороший способ сделать что-то подобное. – Kristiyan
Динамические и гибкие схемы взаимозаменяемы, я бы бросил вам вызов, чтобы сказать мне разницу. Я не знаю, что означает ваше последнее предложение – Sammaye
В несуществующих по умолчанию MongoDB, возвращается null
и только null
.
Одна работа вокруг будет использовать агрегацию:
db.c.aggregate([
{$project: {field: {$ifNull: ['$field', 0]} }}
])
, но я бы не рекомендовал этот подход.
Вместо этого я бы рекомендовал использовать приложение для использования шаблона, такого как Active Record (http://en.wikipedia.org/wiki/Active_record_pattern).
Если мне нужно сделать это для определенного поля, предложенный вами подход будет прекрасен. Но проблема в том, что я не знаю, какие поля отсутствуют в некоторых документах. Поэтому мне просто нужно вернуть значение нуля для всех несуществующих полей в этих документах. –
@RajuPonnala не можете ли вы просто закодировать это в своем приложении довольно легко, используя петлю foreach над полями? Добавьте его в функцию, когда найдете свои записи, и вы найдете это очень просто – Sammaye
Добро пожаловать в переполнение стека! Я немного изменил ваш вопрос, чтобы сделать его более понятным и понятным, поэтому вы, надеюсь, получите еще несколько ответов. Если вы недовольны моими изменениями, не стесняйтесь их отменить. –