c# mongodb 查找对象数组
c# mongodb find array of objects
我想在我的文档中检索一组对象。在 shell 我使用这个:
db.products.findOne({ProductId : 1}).Seller
在 C# 中,这是我的 类
的结构
public class Product
{
public double ProductId { get; set; }
public string ProductName { get; set; }
public string PurchaseDate { get; set; }
public double Price { get; set; }
public List<Seller> Seller { get; set; }
}
public class Seller
{
public double SellerId { get; set; }
public string SellerName { get; set; }
}
mongodb.net 驱动程序中的等效命令是什么?
db.products.findOne({ProductId : 1}).Seller
我希望输出为:
[
{
"SellerId" : 123,
"SellerName" : "ABC"
},
{
"SellerId" : 345,
"SellerName" : "MGJ"
}
]
请看附图output img
public async Task<Product> GetProduct(double productId)
{
return await FindOneAsync(p => (p.ProductId == productId));
}
db1.aggregate([
{
$match: { ProductId: 1 }
},{ $unwind: "$Seller" }, {
$group: {
_id: '$ProductId',
SELLER: { $push: {SellerId: $SellerId, SellerName: $SellerName } }
} }, {
$project:
{
_id: "$_id",
SELLER: '$SELLER'
}
}]).toArray()
.then(result => res.json(result))
.catch(err => res.json(err))
我使用 mongoCLient。尝试使用 aggregate
group
和 project
来获得所需的输出..
希望这有帮助
我想你在找投影。以下是您的操作方法:
public List<BsonDocument> GetSellers(double productId)
{
var context = new Context();
var filter = Builders<Product>.Filter.Eq(x => x.ProductId, productId);
var project = Builders<Product>.Projection.Include(x => x.Sellers);
var sellers = context.Product.Find(filter).Project(project).ToList();
return sellers;
}
请注意,我将 Seller
更改为 Sellers
,因为它是一个列表。我还将使用 ObjectId
作为 ID(而不是 double
或任何其他类型)。
我想在我的文档中检索一组对象。在 shell 我使用这个:
db.products.findOne({ProductId : 1}).Seller
在 C# 中,这是我的 类
的结构public class Product
{
public double ProductId { get; set; }
public string ProductName { get; set; }
public string PurchaseDate { get; set; }
public double Price { get; set; }
public List<Seller> Seller { get; set; }
}
public class Seller
{
public double SellerId { get; set; }
public string SellerName { get; set; }
}
mongodb.net 驱动程序中的等效命令是什么?
db.products.findOne({ProductId : 1}).Seller
我希望输出为:
[
{
"SellerId" : 123,
"SellerName" : "ABC"
},
{
"SellerId" : 345,
"SellerName" : "MGJ"
}
]
请看附图output img
public async Task<Product> GetProduct(double productId)
{
return await FindOneAsync(p => (p.ProductId == productId));
}
db1.aggregate([
{
$match: { ProductId: 1 }
},{ $unwind: "$Seller" }, {
$group: {
_id: '$ProductId',
SELLER: { $push: {SellerId: $SellerId, SellerName: $SellerName } }
} }, {
$project:
{
_id: "$_id",
SELLER: '$SELLER'
}
}]).toArray()
.then(result => res.json(result))
.catch(err => res.json(err))
我使用 mongoCLient。尝试使用 aggregate
group
和 project
来获得所需的输出..
希望这有帮助
我想你在找投影。以下是您的操作方法:
public List<BsonDocument> GetSellers(double productId)
{
var context = new Context();
var filter = Builders<Product>.Filter.Eq(x => x.ProductId, productId);
var project = Builders<Product>.Projection.Include(x => x.Sellers);
var sellers = context.Product.Find(filter).Project(project).ToList();
return sellers;
}
请注意,我将 Seller
更改为 Sellers
,因为它是一个列表。我还将使用 ObjectId
作为 ID(而不是 double
或任何其他类型)。