$ lookup을 사용하여 mongodb에서 조인을 수행하고 있습니다. 이제 여기에 문제가 있습니다. 나는 모든 북마크 브랜드와 두 번째 컬렉션에 대한 모든 세부 정보를 포함하는 사용자를 포함하는 두 개의 컬렉션이 있습니다. 이제 사용자가 북마크 한 모든 브랜드 세부 정보를 반환하려고합니다.
는 컬렉션
{"mobile_no": "8971740148", "brands": ["5829c1df334d40e20e1d1c19", "5829c1df334d40e20e1d1c20", "5829c1df334d40e20e1d1c21"]}
브랜드
{"_id": ObjectId("5829c1df334d40e20e1d1c19"), "brand_name": "Versace"}
{"_id": ObjectId("5829c1df334d40e20e1d1c20"), "brand_name": "Lee Cooper"}
{"_id": ObjectId("5829c1df334d40e20e1d1c21"), "brand_name": "Levis"}
내 통합 파이프 라인의 코드는 이제
{ $match: { mobile_no: mobile_no }},
{ $unwind: { path: "$brands", includeArrayIndex: "brandsposition"}},
{ $lookup: {from: "brands",localField: "brands",foreignField: "_id",as: "user_bookmarks"}},
아래 내가 직면하고있는 문제를 주어진 컬렉션 user_bookmarked 위의 코드는 아무 것도 반환하지 않으므로 브랜드 id를 내 user_bookmarked 컬렉션에 문자열로 저장하지만 ObjectId로 저장하지 않으므로 아무 것도 반환하지 않습니다. 이제 아무도 집계 쿼리 내에서 필드 형식을 어떻게 변경할 수 있는지 말해 줄 수 있습니까?
두 번째로 물어보고 싶은 것은 $ lookup을 사용할 때 mongodb가 foreign_field에 인덱스를 사용하는지 아닌지 알려주는 것입니다. 왜냐하면 나는 과 함께 집계 파이프 라인 위에 실행했기 때문에 : 사실하지만 위의 쿼리에서 사용 된 인덱스를 찾지 못했습니다. 출력에서 반환했습니다. 이제
db.user_bookmarked.runCommand('aggregate', {pipeline: [{ $match: { mobile_no: mobile_no }},
{ $unwind: { path: "$brands", includeArrayIndex: "brandsposition"}},
{ $lookup: {from: "brands",localField: "brands",foreignField: "_id",as: "user_bookmarks"}}], explain: true})
{
"waitedMS" : NumberLong(0),
"stages" : [
{
"$cursor" : {
"query" : {
"mobile_no" : "8971740148"
},
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "test.restaurants",
"indexFilterSet" : false,
"parsedQuery" : {
"mobile_no" : {
"$eq" : "8971740148"
}
},
"winningPlan" : {
"stage" : "COLLSCAN",
"filter" : {
"mobile_no" : {
"$eq" : "8971740148"
}
},
"direction" : "forward"
},
"rejectedPlans" : [ ]
}
}
},
{
"$unwind" : {
"path" : "$brands",
"includeArrayIndex" : "brandsposition"
}
},
{
"$lookup" : {
"from" : "brands",
"as" : "user_bookmarks",
"localField" : "brands",
"foreignField" : "_id"
}
}
],
"ok" : 1
}
사람은 내가 집계 내부 필드의 유형을 변경하는 방법이며, $ 조회 인덱스를 사용하지만, 유용한 아무것도 저를 도와주세요 발견하지 않았습니다 않는이 일의 모두에 대해 검색 한 여기에서 저를 도와 주실 수 있습니다 여기서 사람들은 정말 감탄할 것입니다.
는 왜 상점은 객체 식별자로 ID를 브랜드? 그 일을하는 동안 어떤 문제에 직면 했습니까? – Veeram
개체 ID 크기가 문자열로 비교할 때 큰 및 또한 문자열을 사용하여 내 전체 코드를 작성했습니다 그래서 그냥 idids 문자열을 저장할 싶지 ?? –