mongoDB 구별 및 같은 쿼리의 어디에 있습니까?
다음과 같은 서류를 가지고 있다고 칩시다.
Article { Comment: embedMany }
Comment { Reply: embedMany }
Reply { email: string, ip: string }
구별되는 쿼리를 만들고 싶다.Reply.ip
어디에Reply.email = xxx
이런 거, 근데 안 되네.
db.Article.find("Comment.Reply.email" : "xxx").distinct("Comment.Reply.ip")
JSON 내보내기:
{
"_id":{
"$oid":"4e71be36c6eed629c61cea2c"
},
"name":"test",
"Comment":[
{
"name":"comment test",
"Reply":[
{
"ip":"192.168.2.1",
"email":"yyy"
},
{
"ip":"127.0.0.1",
"email":"zzz"
}
]
},
{
"name":"comment 2 test",
"Reply":[
{
"ip":"128.168.1.1",
"email":"xxx"
},
{
"ip":"192.168.1.1",
"email":"xxx"
}
]
}
]
}
실행:db.Article.distinct("Comment.Reply.ip",{"Comment.Reply.email" : "xxx"})
예상:["128.168.1.1", "192.168.1.1"]
다음과 같은 것이 있습니다.["127.0.0.1", "128.168.1.1", "192.168.1.1", "192.168.2.1"]
Distinct
이와 같은 조건을 가진 mongo에서의 쿼리
db.Article.distinct("Comment.Reply.ip",{"Comment.Reply.email" : "xxx"})
다른 방법은 없다
편집:
문제를 이해했습니다.서브 문서를 대조/필터링하려면 다음과 같이 $elemMatch 연산자를 사용해야 합니다.
db.Article.distinct("Comment.Reply.ip",{Comment: {$elemMatch: {"Reply.email" : "xxx"}}})
단, 서브패키지에 서브배열이 포함되어 있는 경우(이 경우 응답배열)는 동작하지 않습니다.서브어레이에 $elemMatch가 오픈되어 있습니다.그리고 mongo 2.1로 예정되어 있습니다.자세한 내용은 링크를 참조하십시오.
이거 한번 써보세요.
db.Article.aggregate([
{$unwind: "$Comment"},
{$unwind: "$Comment.Reply"},
{$match: {"Comment.Reply.email": "xxx"}},
{$group: {_id: "$Comment.Reply.ip"}}
])
예시의 결과는 다음과 같습니다.
/* 1 */
{
"_id" : "192.168.1.1"
}
/* 2 */
{
"_id" : "128.168.1.1"
}
db.collection.distinct("field_name", query)
컬렉션의 모든 개별 값을 배열 형식으로 반환합니다.
field_name은 고유한 값을 반환하는 필드여야 합니다.
쿼리는 고유한 값을 검색할 문서를 지정합니다.예:-{"Comment.Reply.email" : "xxx"}
또는{'country' : 'India','state' : 'MH','city' : 'mumbai'}
distinctdates=db.dailyreport_detailed.find(
{'uid':personemail,'month':searchdate2,'year':searchdate1}
)
.distinct('date_only')
여기서 find는 조건에 따라 검색되며, 마지막에 구별되는 고유한 날짜가 지정됩니다.
언급URL : https://stackoverflow.com/questions/7419986/mongodb-distinct-where-in-same-query
'programing' 카테고리의 다른 글
Apache POI에서 열 너비 설정 (0) | 2023.04.11 |
---|---|
$.ajax(jQuery 또는 Zepto)를 사용하여 일련의 객체를 POST하려면 어떻게 해야 합니까? (0) | 2023.04.06 |
TypeScript 사용자 지정 오류 클래스 (0) | 2023.04.06 |
iOS 8/Safari 8은 ASP에서 작동하지 않습니다.NET AJAX 확장 (0) | 2023.04.06 |
Spring Boot 테스트에서 다른 application.yml을 로드합니다. (0) | 2023.04.06 |