我有一个具有以下结构的流星集合。这实际上来自Meteor-files
的{{1}}集合。
ostrio
我定义了出版物
{
"_id" : "HsXoZ6bxkx5kMcJtm",
"name" : "trees.jpg",
"meta" : { "artist_id" : "QkmYdsZsMmRzqTg58" , "artist": "some name"},
"mime-type" : "audio/mp3",
"userId" : "QkmYdsZsMmRzqTg58",
"_collectionName" : "images"
}
我要过滤Meteor.publish('files.artist', function publishUserImages(){
return Images.find({meta: {artist_id: this.userId}).cursor;
});
键,以返回所有带有meta
的项目。
我当前的过滤器将仅获取artist_id
具有确切值meta
的那些图像。过滤器不会返回上面显示的项目,因为它的{artist_id: "QkmYdsZsMmRzqTg58"}
值有一个额外的键meta
如何构造合适的过滤器?
答案 0 :(得分:3)
您可以使用dot notation查询嵌套字段
Meteor.publish('files.artist', function publishUserImages(){
return Images.find({ 'meta.artist_id': this.userId}).cursor;
});
区别在于您的查询需要整个子文档匹配,而使用点号表示法只是检查一个子字段是否相等。