我有一个结构化的Mongo文件:
{
"_id": value,
"imageShared": {
"imageid": value,
"commentdatadoc": [
{
"whocommented": value,
"commenttext": value,
"commenttimestamp": isodate(111)
},
{
"whocommented": value,
"commenttext": value,
"commenttimestamp": isodate(444)
},
{
"whocommented": value,
"commenttext": value,
"commenttimestamp": isodate(222)
}
]
}
};
这里我想对字段commenttimestamp
desc进行排序。我尝试了下面的方法,但它不起作用......
Query getComments = new Query();
getComments.addCriteria(Criteria.where("imageShared.imageId").is(imageId)).
with(new Sort(Sort.Direction.DESC,"imageShared.commentDataDoc"));
SharedMediaCollec sharedMediaCollec = mongoTemplate.findOne(getComments, SharedMediaCollec.class);
有没有人知道如何对数组内部的文档字段进行排序?
答案 0 :(得分:0)
当您需要获取所有文档时,在收到MongoDB中的数据后,在C#中进行排序可能要容易得多。自动执行此操作的一种优雅方法是使用SortedSet在C#对象中表示commentdatadoc
数组。
但是当你肯定想要一个数据库端解决方案时,你可以使用aggregation pipeline来完成它,包括$ match-step,$ unwind步骤和$ sort步骤。要使用C#驱动程序执行聚合,请调用collection.Aggregate
,然后将聚合阶段设置为the returned IAggregateFluent
interface。