对于每个记录的MongoDB In查询限制

3
我有一个id数组authorIds=["1","2",3","4"]。我还有另一个数组,它保存了对authorIds的引用。 例如:
book=[
{
      bookId:"abcd",
      authorId:"1"
},
{
      bookId:"def",
      authorId:"1"
}
{
      bookId:"ghi",
      authorId:"2"
}
{
      bookId:"kjl",
      authorId:"1"
}
];

现在我想使用 In 查询(mongodb C#驱动程序),但是想要限制每个作者的书籍数量为5本。有人能告诉我如何实现吗?

可能是 使用聚合在MongoDB中对每个组进行限制和排序 的重复问题。 - Blakes Seven
1个回答

1
您可以使用 Limit 选项来实现这一点:
var builder = Builders<Book>.Filter;
FilterDefinition<Book> filter = builder.In((b => b.authorId), authorIds);
var find = products.Find(filter);
find.Options.Limit = 5;

var bookList = find.ToListAsync().Result;

你也可以将SortBy与此结合使用:

var builder = Builders<Book>.Filter;
FilterDefinition<Book> filter = builder.In((b => b.authorId), authorIds);
var sorted = products.Find(filter).SortBy(b => b.bookId);
sorted.Options.Limit = 5;

var bookList = sorted.ToListAsync().Result;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接