Mongodb 도트 표기 와일드카드?
사용자 모음이 있으며 각 사용자는 하나 이상의 서비스에 가입되어 있을 수 있습니다.각 서비스에는 사용자가 해당 서비스에 대해 보유한 크레딧 수를 포함한 일부 메타데이터가 있습니다.
서비스 개체 키가 무엇인지 알 수 없는 경우 일부 서비스에 대해 50학점 미만인 모든 사용자 개체를 어떻게 찾을 수 있습니까?
개념적으로, 이것은 다음과 같은 것이 될 것입니다. 이것은 작동하지 않습니다.
db.users.find({services.*.credits : {$lt : 50}})
사용자 컬렉션:
{
_id: 4f0ea25072139e4d2000001f,
services : {
a : { credits : 100, score : 2000 },
b : { credits : 200, score : 300 },
c : { credits : 10, score : 1300 }
}
},
{
_id: 4f0ea25072139e4d2000001f,
services : {
f : { credits : 68, score : 14 },
q : { credits : 1000, score : 102 },
z : { credits : 59, score : 352 }
}
}
여기에 명확하지 않은 경우를 대비하여 제가 하고 싶은 일의 또 다른 예가 설명되어 있습니다. http://www.mongodb.org/display/DOCS/Advanced+Queries#comment-346075854
이것은 당신의 질문에 대한 실제 대답입니다.
서비스 개체 키를 알 수 없는 경우 일부 서비스에 대한 크레딧이 50개 미만인 모든 사용자 개체를 찾을 수 있는 방법은 다음과 같습니다.
$where 쿼리 사용:
db.users.find({
$where: function () {
for (var index in this.services)
if (this.services[index].credits < 50)
return this;
}
});
사용 중인 스키마를 사용하여 이 작업을 수행할 수 있는 방법을 모르겠습니다.제가 보기에 당신은 물체를 배열로 남용하고 있는 것 같습니다.한다면services
배열(그것이 되어야 하는 복수의 힌트)이라면, 당신은 간단하게 질문할 수 있습니다.
db.users.find({"services.credits" : { $lt : 50 }});
또는 사용$elemMatch
단일 배열 요소에서 여러 조건을 일치시켜야 하는 경우.
해당 서비스 개체를 어레이에 넣어 사용하는 것이 더 쉬울 것 같습니다.$elemMatch
예:
{
services : [
{key: "a" , credits : 100, score : 2000 },
{key: "b", credits : 200, score : 300 },
{key: "c", credits : 10, score : 1300 }
]
}
그리고.
{
_id: 4f0ea25072139e4d2000001f,
services : [
{key: "f", credits : 68, score : 14 },
{key: "q", credits : 1000, score : 102 },
{key: "z", credits : 59, score : 352 }
]
}
그런 다음 작성할 쿼리는 다음과 같습니다.
db.coll.find({services: {$elemMatch : {credits: {$lt: 50}}}});
결과:
{ "_id" : ObjectId("4f0f2be07561bf94ea47eec4"), "services" : [ { "key" : "a", "credits" : 100, "score" : 2000 }, { "key" : "b", "credits" : 200, "score" : 300 }, { "key" : "c", "credits" : 10, "score" : 1300 } ] }
언급URL : https://stackoverflow.com/questions/8840342/mongodb-dot-notation-wildcard
'programing' 카테고리의 다른 글
ORA-01741: 잘못된 0-길이 식별자 (0) | 2023.07.06 |
---|---|
헤더가 있는 vba를 사용하여 sql 쿼리 결과를 excel로 내보내기 (0) | 2023.07.06 |
Wordpress wp_editor 텍스트 영역에 사용자 지정 속성을 추가하는 방법은 무엇입니까? (0) | 2023.07.06 |
Spring mongo 데이터 저장소 인터페이스를 위한 "16진수 표현 추가" (0) | 2023.07.06 |
SQL 조회에서 카운트 캡처 (0) | 2023.07.06 |