Node.js 使用MongoDB修改集合中的文档位置
我有一套Node.js 使用MongoDB修改集合中的文档位置,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我有一套凭证。用户可以添加凭证,然后在前面部分订购 我的目标是根据用户对前面列表的排序方式,对凭单集合中的所有文档重新排序 以下是一个例子: 这是当前的列表 [ { title: "one", id: "1", }, { title: "two", id: "2", }, { title: "three",
凭证
。用户可以添加凭证
,然后在前面部分订购
我的目标是根据用户对前面列表的排序方式,对凭单
集合中的所有文档重新排序
以下是一个例子:
这是当前的列表
[
{
title: "one",
id: "1",
},
{
title: "two",
id: "2",
},
{
title: "three",
id: "3",
},
{
title: "four",
id: "4",
}
]
用户可以按如下方式重新排列列表:
[
{
title: "one",
id: "1",
},
{
title: "three",
id: "3",
},
{
title: "two",
id: "2",
},
{
title: "four",
id: "4",
}
]
我的主要目标是管理对数据库中的所有文档进行重新排序,作为第二个数组示例,其中每个对象都是一个文档
我可以在凭证
模式中设置索引
字段,在第一次查询中,设置目标元素的位置,然后在第二次查询中,检查文档验证此条件的情况:
oldTargetElementIndex>otherElementIndex>currentTargetElementIndex
。如果文档验证了此条件,那么我将按1
增加索引
这可能是一个解决方案,但我真的不知道如何用mongoDB实现它
顺便说一下,我用的是猫鼬
我希望这是清楚的
有什么想法吗
非常感谢你的帮助!:) tbh,我不能很好地理解它。您并没有试图修改数据库,而是修改查询输出的顺序,对吗?@Minsky是的,对不起,不太清楚。我试图修改数据库中集合的文档顺序:当用户修改列表(前面)的顺序并提交它时,我希望根据用户更新重新组织文档。你明白了吗?我明白了。那么db.coll.aggregate([{$addFields:{“fieldname”:userInput}}])
呢。当然,您需要以文档为目标,否则将覆盖整个集合。@Minsky我不确定是否理解解决方案。它没有根据用户输入对数据库进行排序?@Minsky用户可以在UI中更改位置项。因此,(项目的)位置(即项目)应该在集合中更新