[MONGODB] MongoDB의 배열에서 특정 요소를 받기 [중복]
MONGODBMongoDB의 배열에서 특정 요소를 받기 [중복]
나는 다음과 같은 몽고 컬렉션이
{
"auther" : "xyz" ,
"location" : "zzz" ,
"books" :
[
{"book1" : "b1" , "date" : 2-3-00} ,
{"book1" : "b2" , "date" : 4-9-00}
]
}
{
"auther" : "pqr",
"location" : "zzz" ,
"books" :
[
{"book1" : "b1" , "date" : 2-4-00}
]
}
나는 책 B1 및 저자 XYZ의 날짜 만 싶어.
나는 다음과 같은 메이크업 쿼리가
db.coll.find({"auther" : "xyz" , "books.book1" : "b1"} , {"books.date" : 1})
다음과 같이하지만 출력을 제공 있어요
"books" : {"date" : 2-4-00} , "books" : {"date" : 4-9-00}
{ "날짜": 2-4-00} 나는 책 B1 만 "책"다른 XYZ의 .means의 날짜 만 싶어
이 몽고에서 가능하다 아니면 내가 뭔가 잘못하고있는 중이 야?
해결법
-
==============================
1.MongoDB의 쿼리 언어가 일치하는 모든 문서를 반환하도록 설계되었습니다.
MongoDB의 쿼리 언어가 일치하는 모든 문서를 반환하도록 설계되었습니다.
단지 하위 문서를 반환하는 지원되지 않습니다.
이 문제는 MongoDB를의 티켓 추적기 뛰어난 티켓을 가지고있다.
업데이트 : 고정으로 티켓이 표시되었습니다 것 같습니다.
이것을 사용하는 방법의 예 여기를 참조하십시오.
-
==============================
2.단지 임시 인라인 콜렉션으로 하위 요소를 방출,지도 축소 /를 사용하여 수행 할 수 있습니다. 그것의 해킹과는 단일 스레드는 내가 /지도로에 대해 조언을 줄 것 그러나 작동하고, 당신이 달성하고자하는 것에 대해 큰 부담을 가지고, 그냥 응용 프로그램의 하위 요소를 추출하는 것이 훨씬 쉽다.
단지 임시 인라인 콜렉션으로 하위 요소를 방출,지도 축소 /를 사용하여 수행 할 수 있습니다. 그것의 해킹과는 단일 스레드는 내가 /지도로에 대해 조언을 줄 것 그러나 작동하고, 당신이 달성하고자하는 것에 대해 큰 부담을 가지고, 그냥 응용 프로그램의 하위 요소를 추출하는 것이 훨씬 쉽다.
이 같은...
지도:
m = function() { this.books.forEach(function(book){ if(book1 == 'b1'){ emit("books", {date: book.date,}); } }); }
줄이다:
r = function(key, values) { return this; }
질문:
db.coll.mapReduce(m, r, {query : {"auther" : "xyz" , "books.book1" : "b1"}, out: { inline : 1}})
-
==============================
3.만 일치하는 요소를 선택하려는 경우는 다음과 같이 조회 할 수 있습니다.
만 일치하는 요소를 선택하려는 경우는 다음과 같이 조회 할 수 있습니다.
-
==============================
4.약간의 상상력 (사전 몽고의 V 2.6)와 함께 ...
약간의 상상력 (사전 몽고의 V 2.6)와 함께 ...
당신은 총이 작업을 수행하거나 감소 매핑 할 수 있습니다. 집계는 새로운 더 쉽고 최적화되어 있습니다. 여기에 집계 컬렉션은 "저자"라는 가정을 가진 하위 문서를 반환하는 예제입니다. 나는 제대로 맞춤법 사물의 자유를했다.
Authors.aggregate([ { $match: { author: 'xyz' } }, { $unwind: '$books' }, { $project: { _id: '$books.book1', date: '$books.date' } }, { $match: { '$_id' : 'b1' } } ]);
당신은 너무 같은 단일 항목 배열을 다시 얻을 것이다 :
[{ _id: 'b1', date: '2-4-00' }]
그렇지 않으면, 몽고가 2.6+ 당신이 정말 쉬운 방법을 할 수있는 경우 :
Authors.find({ author: 'xyz', books: { $elemMatch: { book1: 'b1' } } },'books')
발견 오직 하나의 레코드 내 경우 어디에서 책 수집을 다시 얻을 것이다 :
{ _id: 'xyz', books: [ { book1: 'b1', date: '2-4-00' } ] }
from https://stackoverflow.com/questions/5562485/get-particular-element-from-mongodb-array by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB를 별개의 기록을 얻을 (0) | 2019.12.09 |
---|---|
[MONGODB] 배열 내에서 MongoDB를 이름 바꾸기 데이터베이스 필드 (0) | 2019.12.09 |
[MONGODB] (MongoDB의 자바) 배열에 $ 추진 (0) | 2019.12.09 |
[MONGODB] MongoDB를 가진 배열에서 특정 항목을 삭제 (0) | 2019.12.09 |
[MONGODB] 컬렉션에서 최대 값을 얻는 방법을 MongoDB를 (0) | 2019.12.09 |