[MONGODB] 어떻게 몽고에서 포스트 태그를 구현하는 방법?
MONGODB어떻게 몽고에서 포스트 태그를 구현하는 방법?
나는 SO-같은 애완 동물 프로젝트를 만들기 위해 몽고와 놀겠다는거야, 그리고 난 후 태그를 구현하고자합니다. 각 태그는 이름과 슬러그 (문자열 URL의 ID로 사용되는)을 가지고 있으며, 게시물이 여러 개의 태그가 있습니다. 나는 "태그 B가없는, 태그 A를 가지고 찾을 포스트"와 같은 쿼리를 만들 수 있도록하고 싶습니다, 나는이 작업을 수행 할 수있는 몽고-방법 궁금 해요.
한 가지 방법은 각 게시물에 태그 ID의 배열을 저장하는 것입니다 - 이것은 쉽게 쿼리 말했다하게되지만, 태그 이름과 슬러그를 얻기 위해 각 게시물에 대한 별도의 하나가 필요합니다. 또 다른 방법은 각 게시물 [태그 이름, 태그 슬러그]의 배열을 저장하는 것입니다,하지만 난 확실히 내가 발견에 그 정보를 사용할 수있을 것 아니에요.
몽고에 대한 더 나은 작동합니다 다른 방법이 있나요? 나는이 수행 할 수 있습니다 방법에 대한 조언을 감사하겠습니다 그래서 나는, NoSQL에 새로운 해요. 또한, 나는 PHP 바인딩을 사용하고,하지만 그건 문제가되지 아마해야한다.
해결법
-
==============================
1.당신이 사용하는 태그와 각각의 슬러그가 변화하지 않을 경우, 나는 두 번째 접근 방식은 더 나은 하나라고 생각합니다. 이 예 포스트 문서로 태그를 생성하여 하위 필드 명시 할 오히려 [슬러그 명]의 배열을 저장하지 - 단 I은 작은 변화를 제안
당신이 사용하는 태그와 각각의 슬러그가 변화하지 않을 경우, 나는 두 번째 접근 방식은 더 나은 하나라고 생각합니다. 이 예 포스트 문서로 태그를 생성하여 하위 필드 명시 할 오히려 [슬러그 명]의 배열을 저장하지 - 단 I은 작은 변화를 제안
{ "_id" : ObjectId("4ee33229d8854784468cda7e"), "title" : "My Post", "content" : "This is a post with some tags", "tags" : [ { "name" : "meta", "slug" : "34589734" }, { "name" : "post", "slug" : "34asd97x" }, ] }
할 수 있습니다 다음과 같은 점 표기법을 사용하여 특정 태그를 가진 게시물에 대한 쿼리 :
db.test.find({ "tags.name" : "meta"})
태그 배열이기 때문에, 몽고는 배열의 요소가 아닌 전체 배열에 대한 쿼리와 일치하는 영리한 충분히이며, 도트 표기법을 사용하면 특정 필드에 일치시킬 수 있습니다.
특정 태그를 포함하지 않는 게시물에 대한 조회하려면, $ NE를 사용 :
db.test.find({ "tags.name" : { $ne : "fish" }})
그리고 하나 개의 태그가 아닌 다른, 사용 $과가 포함 된 게시물에 대한 쿼리 :
db.test.find({ $and : [{ "tags.name" : { $ne : "fish"}}, {"tags.name" : "meta"}]})
도움이 되었기를 바랍니다!
from https://stackoverflow.com/questions/8455685/how-to-implement-post-tags-in-mongo by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 여기서 _id의 배열의 선택 MongoDB를? (0) | 2019.12.22 |
---|---|
[MONGODB] 쿼리는 MongoDB를 가진 마지막으로 X 분의 데이터를 얻을 수 있습니다 (0) | 2019.12.22 |
[MONGODB] 어떻게 mongodump하여 덤프 된 데이터를 사용 하는가? (0) | 2019.12.22 |
[MONGODB] MongoDB를이 - 포함 또는 C #을 드라이버 특정 요소를 제외 (0) | 2019.12.22 |
[MONGODB] MongoDB의 임베디드 문서 속성을 업데이트 (0) | 2019.12.22 |