この問題はナットを運転しています。 Meteor.publishにオブジェクトの空でない配列を取得するコードが必要です。Meteor Publishは空でない配列を取得します
サンプル構造を以下に示します(ここでは、フィールド名は任意であり、私はちょうど構造を提示しています) - あなたは私が空の配列を持つ1「火曜」を持っている参照してください。この例では
Books:{
_id:'xyz',
name:'book1',
image:[binary array],
pages:[
{
id:1,
name:'page1',
author:'ueye',
picture:[binary array]
chapters:{
mon:[
{
chapter1:'zzz',
chapter2:'xxx'
}
],
tue:[
{
chapter1:'123',
chapter2:'yyy'
}
],
wed:[],
thu:[],
fri:[],
wkd:[],
}
},
{
id:2,
name:'page2',
author:'asfnwro',
picture:[binary array],
chapters:{
mon:[
{
chapter1:'xyz',
chapter2:'uuu'
}
],
tue:[],
wed:[
{
chapter1:'7777',
chapter2:'ieismxi',
}
],
thu:[],
fri:[],
wkd:[],
}
}
]
}
(見終わり)。私は空ではないすべての「チャプターズ・トゥ」を取りに行きたいです。 私は、ドキュメント全体(この例では 'pages.id'、 'pages.name'、 'pages.picture')とそれらの配列の 'chapters.tue'からのすべてのフィールドを望んでいないことに注意してください( 'chapters.tue ')は空ではありません。 チャプターは常に毎週の曜日に配列されていることが保証されていますが、これらの配列自体には要素がある場合とない場合があります。これらの配列が移入されると、構造は常に同じになります(上記の例では常にchapter1があり、配列にはchapter2が常にあります)。
ありがとうございました。
db.myDoc.aggregate([
{$match:{'_id':'xyz'}},
{$unwind:'$pages'},
{$match:{'pages.chapters.tue':{$not:{$size:0}}}},
{$project:{'name':1, 'pages.chapters.tue':1}},
{$group:{'_id': '$_id','name': {$first:'$name'},
'chapters': { $addToSet:'$pages.chapters.tue'}}
}
])
MeteorでMongoアグリゲーションを公開することはできません。Meteorメソッド – Khang
はどのような提案ですか?次にMeteor Publishで上記を達成するにはどうすればよいですか? – RichardAu
私はあなたのコレクションをデカップリングする必要があると思います、3つの別々のコレクションを作成する: 'myDoc'、' pages'、 'bags' – Khang