MongoDB에서 데이터를 검색하기 위해 SSIS에 스크립트를 만들었습니다. 정규 문서를 쿼리하는 데 문제가 없지만 중첩 된 문서에서 값을 검색하는 방법을 모르겠습니다. 예를 들어 확장 된 '주소'에는 '국가', '주', '도시', '거리'및 '우편 번호'가 포함됩니다. "국가"(필드) 값만 검색하는 데 관심이 있습니다. 이론적으로, 나는 그것이 "Address.Country"와 같은 것이어야한다는 것을 이해하지만, 그것을 코드에서 구현하는 방법을 모른다. 이를 달성하는 가장 좋은 방법은 무엇입니까?MongoDB에서 중첩 된 개체를 쿼리하십시오.
public override void CreateNewOutputRows()
{
string connectionString = "mongodb://localhost";
MongoServer myMongo = MongoServer.Create(connectionString);
myMongo.Connect();
var db = myMongo.GetDatabase("UserDB");
/*ICursor<BsonDocument> cursor = db.GetCollection<BsonDocument>("UserDB").FindAll();*/
foreach (BsonDocument document in db.GetCollection<BsonDocument>("UserDB").FindAll())
{
this.UserDBBuffer.AddRow();
this.UserDBBuffer.ID = document["_id"] == null ? "" : document["_id"].ToString();
this.UserDBBuffer.PrimaryEmail = document["primary_email"] == null ? "" : document["primary_email"].ToString();
this.UserDBBuffer.Gender = document["gender"] == null ? "" : document["gender"].ToString();
}
}
감사합니다! 이것은 내가 필요한 것입니다! – Pasha
이제 다음 과제는 배열에서 데이터를 추출하는 방법입니다. 예를 들어, 배열 중 하나는 "devices -> Document -> device_data -> model"또는 "devices -> Document -> device_data -> brand"와 같습니다. 기기의 모델 또는 브랜드를 어떻게 추출합니까? 다시 한 번 도움을 주셔서 감사합니다. – Pasha
"주소"를 "위치"(국가가 포함 된 다른 필드)로 변경하고 내 스크립트가 "국가를 찾을 수 없음"을 반환하고 이유를 파악할 수 없습니다 ... – Pasha