MongoDB 查询两个具有排序顺序的集合
MongoDB query two collections with sort orders
示例:让我们假设以下集合。 ThrashMetalDocumentsCollection 和 SpeedMetalDocumentsCollection,这两个集合都具有相同的 HeavyMetalRecordDocument 结构,如下所示。如何查询和 return 两个集合中的所有记录并按发布日期(从旧到大)和评级(从高到低)对它们进行排序?谢谢! \m/ \m/
static async Task getAllRecords()
{
var builder = Builders<HeavyMetalRecordDocument>.Filter;
//var filter;
using (var cursor = await ThrashMetalDocumentsCollection.Find()
.Sort(Builders<HeavyMetalRecordDocument>.Sort.Ascending(x => x.rating))
.ToCursorAsync())
{
while (await cursor.MoveNextAsync())
{
foreach (var doc in cursor.Current)
{
//Do Something…
}
}
}
}
public class HeavyMetalRecordDocument
{
public ObjectId Id { get; set; }
public String artist { get; set; }
public String title { get; set; }
public DateTime releaseDate { get; set; }
public int rating { get; set; } // 1-10
}
MongoDB 不是关系数据库,因此,它无法执行连接(这是您要尝试完成的)。您可能想更多地考虑数据库的结构。在不知道您要做什么的情况下,我建议将所有类型的专辑放入一个集合中 - 放入一个额外的字段来指示专辑的流派。
示例:让我们假设以下集合。 ThrashMetalDocumentsCollection 和 SpeedMetalDocumentsCollection,这两个集合都具有相同的 HeavyMetalRecordDocument 结构,如下所示。如何查询和 return 两个集合中的所有记录并按发布日期(从旧到大)和评级(从高到低)对它们进行排序?谢谢! \m/ \m/
static async Task getAllRecords()
{
var builder = Builders<HeavyMetalRecordDocument>.Filter;
//var filter;
using (var cursor = await ThrashMetalDocumentsCollection.Find()
.Sort(Builders<HeavyMetalRecordDocument>.Sort.Ascending(x => x.rating))
.ToCursorAsync())
{
while (await cursor.MoveNextAsync())
{
foreach (var doc in cursor.Current)
{
//Do Something…
}
}
}
}
public class HeavyMetalRecordDocument
{
public ObjectId Id { get; set; }
public String artist { get; set; }
public String title { get; set; }
public DateTime releaseDate { get; set; }
public int rating { get; set; } // 1-10
}
MongoDB 不是关系数据库,因此,它无法执行连接(这是您要尝试完成的)。您可能想更多地考虑数据库的结构。在不知道您要做什么的情况下,我建议将所有类型的专辑放入一个集合中 - 放入一个额外的字段来指示专辑的流派。