반응형
어레이의 첫 번째 항목을 새 필드에 투영(MongoDB 집약)
Mongoose Aggregation(MongoDB 버전 3.2)을 사용하고 있습니다.
나는 밭이 있다.users
배열입니다.하고싶어$project
이 배열의 첫 번째 항목을 새 필드로 이동user
.
나는 노력했다.
{ $project: {
user: '$users[0]',
otherField: 1
}},
{ $project: {
user: '$users.0',
otherField: 1
}},
{ $project: {
user: { $first: '$users'},
otherField: 1
}},
하지만 둘 다 효과가 없다.
어떻게 하면 제대로 할 수 있을까요?감사해요.
업데이트:
v4.4부터는 전용 운영자 $first가 있습니다.
{ $project: {
user: { $first: "$users" },
otherField: 1
}},
이건 구문이 되는 설탕이야
원답:
arrayElmAt를 사용할 수 있습니다.
{ $project: {
user: { $arrayElemAt: [ "$users", 0 ] },
otherField: 1
}},
오브젝트 배열로 단일 오브젝트 필드만 사용하는 경우:
{
"users": [
{name: "John", surname: "Smith"},
{name: "Elon", surname: "Gates"}
]
}
다음을 사용할 수 있습니다.
{ $project: { user: { $first: "$users.name" } }
편집(대소문자 제외 - @haytham 댓글 후)
배열의 중첩된 문서에서 단일 필드를 제외하려면 다음 두 가지 투영을 수행해야 합니다.
{ $project: { user: { $first: "$users" } }
첫 번째 오브젝트 전체를 반환한 후 원하지 않는 필드를 제외합니다.
{ $project: { "user.name" : 0 }
시작하는Mongo 4.4
집약 연산자를 사용하여 배열의 첫 번째 요소에 액세스할 수 있습니다.
// { "users": ["Jean", "Paul", "Jack"] }
// { "users": ["Claude"] }
db.collection.aggregate([
{ $project: { user: { $first: "$users" } } }
])
// { "user" : "Jean" }
// { "user" : "Claude" }
언급URL : https://stackoverflow.com/questions/39196537/project-first-item-in-an-array-to-new-field-mongodb-aggregation
반응형
'programing' 카테고리의 다른 글
Ajax 링크 요청을 보호하는 방법 (0) | 2023.03.12 |
---|---|
유형에서 속성 제외 (0) | 2023.03.12 |
angularjs에서 폼의 유효성을 확인하려면 어떻게 해야 합니까? (0) | 2023.03.12 |
WPML 및 커스텀 포스트 타입 아카이브 템플릿 (0) | 2023.03.12 |
뷰포트 크기에 따라 조건부로 렌더링합니다. (0) | 2023.03.12 |