2013-03-04 4 views
4

Я пытаюсь вытащить документ из коллекции Метеор без поля _ID, но ни включения:Исключая _id из поискового запроса Meteor?

Db.find({foo: bar}, {fields: { 
    test1: 1, 
    test2: 1, 
    _id: 0 
}}) 

ни исключение:

Db.find({foo: bar}, {fields: { 
    test3: 0, 
    _id: 0 
}}) 

похоже на работу. Оба просто возвращают пустой массив. Я знаю, что вытащить документ с исключенным _id можно в Монго, это в Метеор?

ответ

3

Я думаю, что вы забыли некоторые фигурные скобки:

Db.find({ 
    foo: bar 
}, { 
    fields: { 
     test3: 0, 
     _id: 0 
    } 
}); 

И я прочитал где-то, что смесь включения/исключения не поддерживается. Это означает, что ваш первый пример не будет работать.

EDIT:

От метеора docs:

Полевые спецификаторы

На сервере запросов можно указать конкретный набор полей включить или исключить из объект результата. (поля спецификатор в настоящее время игнорируется на клиенте.)

Чтобы исключить определенные поля из объектов результата, поле спецификатор представляет собой словарь, ключи которого являются именами полей и значение которого равны 0.

Users.find({}, {fields: {password: 0, hash: 0}})

Для возврата объекта, который включает только указанное поле, используйте 1 как значение. Поле _id по-прежнему включено в результат.

Users.find({}, {fields: {firstname: 1, lastname: 1}})

Это не возможно смешивать включения и исключения стилей.

+0

Ya, но дело в том, что ни один из них работают, что странно, так как делают в MongoDb (или их эквивалент, синтаксис, очевидно, немного отличается) – J2K

+0

у меня есть редактировать мой ответ. Надеюсь это поможет. ;) –

+0

Я заметил, что в документации, но для меня смелая часть немного расплывчата, и я не думаю, что напрямую отвечает на мой вопрос. Я читал это, говоря, что при выборе полей, явно указывая, что включать, _id будет по-прежнему включаться, даже если не упоминаться, свойство, уникальное для него. Для меня это не означает, что обязательно исключить _id, используя разные команды (например, явно указывая, чтобы исключить его, хотя это, похоже, так). Если это невозможно, это немного странно, и если это намеренная особенность Метеор, мне было бы любопытно, почему это так. – J2K