다음을 통해 공유


.NET을 사용하여 Azure Cosmos DB for MongoDB에서 문서 쿼리

적용 대상: MongoDB

쿼리를 사용하여 컬렉션에서 문서를 찾습니다.

참고 항목

예제 코드 조각은 GitHub에서 .NET 프로젝트로 사용할 수 있습니다.

API for MongoDB 참조 설명서 | MongoDB 패키지(NuGet)

문서에 대한 쿼리

문서를 찾으려면 컬렉션에서 쿼리 필터를 사용하여 문서를 찾은 방법을 정의합니다.

// insert documents to query
var products = new List<BsonDocument>()
{
    new BsonDocument
    {
        { "_id",  new ObjectId("62b1f43a9446918500c875c5") },
        { "name", "Sand Surfboard" },
        { "category", "gear-surfboards" },
        { "count", 1 }
    },
    new BsonDocument
    {
        { "_id",   new ObjectId("12b1f43a9446918500c875c5") },
        { "name", "Ocean Surfboard" },
        { "category", "gear-surfboards" },
        { "count", 5 }
    },
    new BsonDocument
    {
        { "_id",   new ObjectId("55b1f43a9446918500c875c5") },
        { "name", "Beach Towel" },
        { "category", "gear-accessories" },
        { "count", 4 }
    },
    new BsonDocument
    {
        { "_id",   new ObjectId("33b1f43a9446918500c875c5") },
        { "name", "Sunglasses" },
        { "category", "gear-accessories" },
        { "count", 5 }
    }
};


collection.InsertMany(products);

// Find by ID
var filter = Builders<BsonDocument>.Filter.Gt("_id", "62b1f43a9446918500c875c5");
var query1 = collection.Find<BsonDocument>(filter).FirstOrDefault();
Console.WriteLine($"Query by id: {query1["_id"]} \n");

// Find by doc property
var filter2 = Builders<BsonDocument>.Filter.Eq("name", "Sand Surfboard");
var query2 = collection.Find<BsonDocument>(filter2).FirstOrDefault();
Console.WriteLine($"Query by property: {query2["name"]} \n");

// Find all by property
var filter3 = Builders<BsonDocument>.Filter.Eq("category", "gear-surfboards");
var query3 = collection.Find<BsonDocument>(filter3);
Console.WriteLine("Query all by property:");
foreach (var item in query3.ToList())
{
    Console.WriteLine(item["name"]);
}

// Find all in a collection
var query4 = collection.Find<BsonDocument>(new BsonDocument()).ToList();
Console.WriteLine("\nQuery all in a collection:");
foreach (var item in query4.ToList())
{
    Console.WriteLine(item["name"]);
}

// Pagination - fine next 5 docs
// sort by name requires an index on name
var index = Builders<BsonDocument>.IndexKeys.Ascending("name");
collection.Indexes.CreateOne(new CreateIndexModel<BsonDocument>(index));

var sort = Builders<BsonDocument>.Sort.Ascending("name");
var query5 = collection.Find<BsonDocument>(new BsonDocument()).Sort(sort).Skip(2).Limit(2).ToList();
Console.WriteLine("\nQuery using pagination:");
foreach (var item in query5.ToList())
{
    Console.WriteLine(item["name"]);
}

참고 항목