2015-04-27 2 views
1

В моей коллекции mongoDB есть несколько документов, которые содержат несуществующих полей.Возврат «ноль» для несуществующих полей

Я хочу, чтобы эти поля были «нулевыми» при извлечении документов из коллекции.

Есть ли method для этого?

+0

Добро пожаловать в переполнение стека! Я немного изменил ваш вопрос, чтобы сделать его более понятным и понятным, поэтому вы, надеюсь, получите еще несколько ответов. Если вы недовольны моими изменениями, не стесняйтесь их отменить. –

ответ

0

Поскольку MongoDB является document based DB, у вас нет общей структуры таблицы, такой как SQL. Один документ BSON (документ mongo) может иметь в целом различный контент.

Вы можете создать массив, который будет использоваться для сравнения базы.

+0

MongoDB не имеет схемы не потому, что ориентирован на документ. Он не имеет одного, потому что он запрограммирован в ядре как гибкий в плане схемы. Документарные базы данных могут принимать базовую схему, как и любую БД, но они выбирают, что вам нужно реализовать ее в приложении. – Sammaye

+0

Чтобы быть верным - MongoDB имеет динамические схемы, обычно идея использовать MongoDB - это ситуации, где необходимо иметь различия. Чтобы сделать отдельный документ, это хороший способ сделать что-то подобное. – Kristiyan

+0

Динамические и гибкие схемы взаимозаменяемы, я бы бросил вам вызов, чтобы сказать мне разницу. Я не знаю, что означает ваше последнее предложение – Sammaye

0

В несуществующих по умолчанию MongoDB, возвращается null и только null.

Одна работа вокруг будет использовать агрегацию:

db.c.aggregate([ 
    {$project: {field: {$ifNull: ['$field', 0]} }} 
]) 

, но я бы не рекомендовал этот подход.

Вместо этого я бы рекомендовал использовать приложение для использования шаблона, такого как Active Record (http://en.wikipedia.org/wiki/Active_record_pattern).

+0

Если мне нужно сделать это для определенного поля, предложенный вами подход будет прекрасен. Но проблема в том, что я не знаю, какие поля отсутствуют в некоторых документах. Поэтому мне просто нужно вернуть значение нуля для всех несуществующих полей в этих документах. –

+0

@RajuPonnala не можете ли вы просто закодировать это в своем приложении довольно легко, используя петлю foreach над полями? Добавьте его в функцию, когда найдете свои записи, и вы найдете это очень просто – Sammaye

Смежные вопросы