다음이 있습니다. 목록의 첫 번째 요소 만 반환하는 프로젝션을 사용하여 MongoDB에서 문서를 검색해야합니다. 그러나이 목록은 다른 목록 안에 있고이 목록은 문서의 다른 개체 안에있는 개체 내부에 있습니다. 다음과 같이 보입니다.
{
"items": {
"item": [
{
"items": {
"item": [
{
"cell": [
{
"value": "a"
},
{
"value": "b"
},
{
"value": "c"
}
]
}
]
}
}
]
}
}
내 목표는 다른 값을 피하기 위해 프로젝션을 사용하여 "a"값 으로 가져 오는 것 입니다. 즉, 내 투영은 다음을 반환해야합니다.
{
"items": {
"item": [
{
"items": {
"item": [
{
"cell": [
{
"value": "a"
}
]
}
]
}
}
]
}
}
문제는 내가 아는 모든 것을 이미 시도했다는 것입니다. $ elemMatch, $ 및 $ slice를 사용하여이 첫 번째 요소 만 반환했지만 문서의 복잡성으로 인해 쿼리를 수행 할 수 없습니다. MongoDB 3.2를 사용하고 있습니다.
더 많은 정보가 필요하면 여기에서 업데이트합니다. 어쨌든 여러분 감사합니다!
아래와 같이 시도 할 수 있습니다. 차종은의 사용 $ 맵 구조를 유지하고 사용하는 반면 셀 어레이에 도달하는 사업자 $ 슬라이스를 첫 번째 값을 선택 할 수 있습니다.
aggregate({
$project: {
items: {
item: {
$map: {
input: "$items.item",
as: "outer",
in: {
"items": {
item: {
$map: {
input: "$$outer.items.item",
as: "inner",
in: {
"cell": {
$slice: ["$$inner.cell", 1]
}
}
}
}
}
}
}
}
},
_id: 0
}
})
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다