Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在MongoDB中维护自定义订单/文档排序_Node.js_Mongodb_Sorting_Mongoose - Fatal编程技术网

Node.js 在MongoDB中维护自定义订单/文档排序

Node.js 在MongoDB中维护自定义订单/文档排序,node.js,mongodb,sorting,mongoose,Node.js,Mongodb,Sorting,Mongoose,在我的web应用程序XY中,我向用户显示了一个经典的数据(文档)列表/表格。虽然MongoDB(以及Mongoose,我正在使用Mongoose)提供的所有排序函数对我来说都非常清楚,但我对按日期或字母顺序排序不感兴趣。在我的例子中,让用户维护自定义排序非常重要,就像手动拖放项目一样,以设置文档的特定顺序(例如,将收藏夹放在列表的顶部)。要做到这一点,用户界面是很简单的,但是如何在数据库中实际保存订单,大脑冻结 问题:如何保存这样一个自定义的文档顺序 我使用什么:NodeJS/Express/M

在我的web应用程序XY中,我向用户显示了一个经典的数据(文档)列表/表格。虽然MongoDB(以及Mongoose,我正在使用Mongoose)提供的所有排序函数对我来说都非常清楚,但我对按日期或字母顺序排序不感兴趣。在我的例子中,让用户维护自定义排序非常重要,就像手动拖放项目一样,以设置文档的特定顺序(例如,将收藏夹放在列表的顶部)。要做到这一点,用户界面是很简单的,但是如何在数据库中实际保存订单,大脑冻结

问题:如何保存这样一个自定义的文档顺序

我使用什么:NodeJS/Express/Mongoose(MongoDB)


思想 到目前为止,我能想到两个如何做到这一点的想法

  • A:在mongoose模式中有一个额外的键(例如,
    orderKey
    )。大弊病:我需要不断更新所有文档和订单密钥。我还需要一些新文档的自动增量
constmysch=新模式({
orderKey:{type:Number}
});
  • B:创建一个仅用于排序的架构/模型,例如使用包含所有文档ID的
    数组。数组中元素的顺序将用作文档自定义顺序的参考。每当顺序改变时,这个
    数组也会改变
conts orderSch=新架构({
orderArray:{type:Array}
}); 
猫鼬模型('Order',orderSch);
/*const customOrder=新订单({
orderArray:[\u id1、\u id2、\u id3、\u id10、\u id7、…]
}); */

任何更多的想法或最佳实践都将受到高度赞赏

我找到了一个解决方案custom mongorc.js,它默认为您排序文档键。它叫[Mongo Hacker][1][1]:@pawansgi92谢谢你的建议。我快速浏览了一下这个mongo黑客工具,但如果我想为每个用户定制订单,甚至子文档或参考文档,我认为它并不合适。我正在寻找一个解决方案,了解如何“存储/保存”订单。我不是在寻找对文档进行排序的解决方案。