2013-03-04 37 views
4

我試圖拉從一個流星集合文件沒有_id字段,但既不包括:從流星搜索查詢中排除_id?

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

也不排斥:

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

似乎工作。兩者都只是返回一個空數組。我知道在Mongo中使用_id排除文檔是可能的,它是否在流星?

回答

3

我想你已經忘記了一些括號:

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

,我已經讀的地方,該組合包含/排除的是不支持。這意味着,你的第一個例子將不起作用。

編輯:

從流星docs

字段說明

在服務器上,查詢可以指定一個特定的字段集到 包含或排除結果對象。 (字段說明符 當前在客戶機上被忽略。

要從結果對象中排除某些字段,該字段指定符 是一個字典的鍵是字段名和其值是0

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

要返回僅包含指定字段的對象,請使用1作爲 的值。 _id字段仍然包含在結果中。

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

這是不可能的混合納入和排除樣式。

+0

雅,但問題是,無論是他們的工作,這是奇怪的,因爲無論是在MongoDB中做(或等價物的語法顯然略有不同) – J2K 2013-03-04 16:24:31

+0

我編輯我的答案。希望這可以幫助。 ;) – 2013-03-05 21:59:05

+0

我注意到在文檔中,但對我來說粗體部分有點模糊,我不認爲直接回答我的問題。我讀到它的意思是說,當通過明確指定要包含哪些字段來選擇字段時,即使沒有提及,_id仍然會被包含在內,這是它獨有的屬性。對我而言,這並不意味着通過使用不同的命令來排除_id是不可能的(例如明確指出排除它,儘管這似乎是這種情況)。如果不可能,那有點奇怪,如果這是Meteor的一個有意識的特徵,我會好奇它爲什麼會這樣。 – J2K 2013-03-06 01:04:11