2013-03-04 55 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