MongoDB를 사용하기 위해 PHP로 간단한 블로그 시스템을 만들려고 노력하고 있습니다.하지만 Mongo를 쿼리하는 데 어려움이 있습니다.MongoDB : 중첩 된 배열을 쿼리하는 방법?
각 블로그 게시물 문서는 다음과 같습니다 어디 2000 무작위 게시물을 생성했습니다
예를 들어 하나 개의 특정 저자가 쓴 모든 글을 가져올 때 나는 거의 그 많은 혜택 질의에 보류를 얻고있다{
"_id": ObjectId("4f908868d3269edc1a00044c"),
"author": {
"name": "Christine Skinner",
"email": "[email protected]",
"age": 54,
"city": "London"
},
"post": "sagittis. Nullam vitae diam. Proin dolor. Nulla semper tellus id nunc interdum feugiat. Sed nec metus facilisis lorem tristique aliquet. Phasellus fer [...]",
"date": "Fri Nov 13 12: 11: 48 +0100 2009",
"rating": 2,
"comments": {
"0": {
"name": "Barrett Bailey",
"email": "[email protected]",
"upVotes": 4,
"downVotes": 76,
"comment": "gravida. Aliquam tincidunt, nunc ac mattis ornare, lectus ante dictum mi, ac mattis velit justo nec ante. Maecenas mi felis, adipiscing fringilla, por [...]"
},
"1": {
"name": "Cheryl Fitzgerald",
"email": "[email protected]",
"upVotes": 13,
"downVotes": 76,
"comment": "adipiscing. Mauris molestie pharetra nibh. Aliquam ornare, libero at auctor mauris id sapien. Cras dolor dolor, tempus non, lacinia at, iaculis quis, [...]"
},
"2": {
"name": "Carly Graham",
"email": "[email protected]",
"upVotes": 55,
"downVotes": 75,
"comment": "Nullam velit dui, semper et, lacinia vitae, massa lobortis ultrices. Vivamus rhoncus. Donec est. Nunc ullamcorper, velit in aliquet lobortis, nisi nib [...]"
}
},
"tags": {
"0": "World War II",
"1": "world War I"
}
}
또는 등급이 X보다 크거나 같은 게시물을 받고 있지만 내 의견이 중첩 된 배열에 문제가 있습니다.
내가 잘못했는지는 잘 모르겠지만 먼저 모든 블로그 게시물에 댓글을 달아 어떻게 표시합니까? $collection->find()
간단한 작업을 수행 할 때 PHP 함수 iterator_to_array를 사용하여 배열에서 모두 가져옵니다. 그런 다음 각 값을 반복하는 간단한 foreach()를 수행합니다. 그러나 주석은 그 자체로 배열입니다. 의견을 얻기 위해 새로운 foreach를 만들어야합니까, 아니면 더 빠르고 더 똑똑한 방법이 있습니까?
또 다른 문제점은 쿼리의 주석 속성을 사용하려는 경우입니다. 댓글을 삭제해야하는 경우 _id와 댓글 작성자 (또는 댓글 번호)를 블로그에 게시해야하지만 댓글 수가 다양하기 때문에 때로는 댓글이 하나 뿐이고 때로는 최대 10 개의 댓글까지 있습니다.
의견을 다른 컬렉션에 넣어야합니까, 아니면 각 코멘트에 배열 번호가 아닌 고유 한 ID를 주어도됩니까? 그리고 질문에 대한 주석 내부의 속성을 사용하여 어떻게 하나의 블로그 게시물을 표시하지만 가장 큰 upVotes 이후에 주석을 정렬하려고한다고 가정 해 봅시다.
여러 자습서를 시도했지만 그 중 대부분이 매우 정적 인 문서를 다루고 있으므로이 방법이 잘못되었다고 생각됩니다.
도움이나 제안을 보내 주시면 대단히 감사하겠습니다.