0

我需要根据参数列表查询集合。例如我的模型是:

public class Product
{
    string id{get;set;}
    string title{get;set;}
    List<string> tags{get;set;}
    DateTime createDate{get;set;}
    DbReference<User> owner{get;set;}
}

public class User
{
    string id{get;set;}
    ...other properties...
}

我需要查询指定用户拥有并按creationDate 排序的所有产品。

例如:

GetProducts(List<string> ownerIDs)
{
    //query
}

如果可能,我需要在一个查询中完成,而不是在 foreach 中。如果需要,我可以更改我的模型

4

2 回答 2

1

听起来您正在寻找 $in 标识符。您可以像这样查询产品:

db.product.find({owner.$id: {$in: [ownerId1, ownerId2, ownerId3] }}).sort({createDate:1});

只需用您自己的所有者数组替换该 javascript 数组 [ownerId1, ...] 即可。

注意:我猜这个查询效率不高。我对 MongoDB 中的 DBRefs 不太满意,它本质上是向非关系数据库添加关系。我建议将 ownerID 直接存储在产品对象中并基于此进行查询。

于 2011-11-15T16:55:25.610 回答
1

使用 LINQ 的解决方案是制作一组用户 ID,然后对它们执行 .Contains,如下所示:

List<string> users = new List<string>();
foreach (User item in ProductUsers)
    users .Add(item.id);

return MongoSession.Select<Product>(p => users .Contains(p.owner.id))
                    .OrderByDescending(p => p.createDate)
                    .ToList();
于 2011-11-20T07:58:11.857 回答