아래 그림과 같이 구조적으로 유사한 문서를 포함 하는 MongoDB
collection
호출 Cards
이 있습니다.
{
"_id" : ObjectId("mongoid"),
"userName": "Har109",
"array1" : [
{
"id" : "11",
"name" : "hello world",
}
{
"id" : "21",
"name" : "bye world",
}
],
"array2" : [
{
"id" : "1",
"name" : "titanic",
}
{
"id" : "2",
"name" : "avatar",
}
],
"array3" : [
{
"id" : "1",
"name" : "The Alchemist",
}
{
"id" : "2",
"name" : "What is Zero",
}
]
}
다음 쿼리가 필요합니다. "array1.id" 와 일치 하는 컬렉션 의 문서 수를 계산합니다. 그러면 다른 모든 배열 (예 : "array2.id", "array3.id" )에 대해이를 수행 할 수 있습니다.
이러한 종류의 쿼리에 대한 구문은 무엇입니까 MongoDB Compass
?
나는 시도했다 : array1 이있는 모든 문서를 얻는 파이프 라인
[{$count: 'array1'}]
그러나 mongodb 나침반의이 파이프 라인에 array1.id = "11"인 조건을 어떻게 추가합니까? 여기서 스테이지는 별도로 수행됩니다.
컬렉션에서 "array1.id"와 일치하는 문서 수를 계산합니다.
포함 된 문서 수를 찾으려면 array.id=x
다음을 실행할 수 있습니다.
db.collection.find({ "array1.id":"11" }).countDocuments()
또는 집계 사용
db.collection.aggregate([
{ $match:{"array1.id":"11"} },
{ count:"array1" }
])
알고리즘은 배열을 자동으로 탐색합니다.
키가 없으면 문서를 찾을 수 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다