이 문제로 인해 많은 어려움이 있습니다. Meteor.publish에서 객체의 비어 있지 않은 배열을 얻으려면 코드가 필요합니다.Meteor Publish가 비어있는 배열을 가져옵니다.
샘플 구조는 (여기에, 난 그냥 구조를 제시하고 임의의 필드 이름이 있습니다) 아래에 표시됩니다 - 당신은 내가 하늘의 배열을 하나의 '화'합니다 (볼이 볼이 예에서
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:[],
}
}
]
}
종료). 나는 비어 있지 않은 모든 'chapters.tue'를 가져오고 싶습니다. 필자는 전체 문서 만 (이 예제에서는) '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 aggregation을 사용할 수 없으며, Meteor 메소드 – Khang
만 제안하면 Meteor Publish로 어떻게 위와 같은 작업을 수행 할 수 있습니까? – RichardAu
나는 당신이 컬렉션을 분리해야한다고 생각한다. 분리 된 컬렉션은 myDoc, pages, bags이다. – Khang