我有以下收集檔案型別:
Car
{
Id
Make
Model
}
和
UserCar
{
UserId
CarId (references Car.Id)
}
我無法使用 MongoDB C# Driver 找到正確的查詢:
獲取 UserId = x 的所有汽車
這是 SQL 中的一個非常簡單的查詢,所以我很沮喪,因為他們的 SDK 證明如此困難(至少對我而言)。包含過濾器的 ID-to-ID 集合似乎是問題所在。所以,從:
var db = MongoUtil.GetDb();
var cars = db.GetCollection<Car>("Cars");
var userCars = db.GetCollection<UserCar>("UserCars");
List<Car> carsJoined = ??? where UserId = 1234
謝謝您的幫助。
uj5u.com熱心網友回復:
使用 MongoDB .NET 驅動程式.Aggregate()
(盡管下面的查詢看起來有點復雜)。
var result = cars
.Aggregate()
.Lookup<UserCar, BsonDocument>(
"UserCars",
"Id",
"CarId",
"userCars")
.Match(Builders<BsonDocument>.Filter
.ElemMatch<BsonValue>("userCars", new BsonDocument("UserId", 1234)))
.Project<masterDocument>(Builders<BsonDocument>.Projection
.Exclude("userCars"))
.ToList();
這相當于聚合查詢
db.cars.aggregate([
{
$lookup: {
from: "UserCars",
localField: "Id"
foreignField: "CarId",
as: "userCars"
}
},
{
$match: {
"userCars": {
$elemMatch: {
"UserId": 1234
}
}
}
},
{
$project: {
userCars: 0,
// Other fields: 1
}
}
])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/494470.html
標籤:C# 数据库 mongodb mongodb查询 mongodb-.net-驱动程序
上一篇:如何增加MongoDB中的值