如何更改MongoDB / Mongoose文档的位置?

时间:2019-06-29 18:53:32

标签: node.js mongodb express mongoose

我不是英语母语人士。所以请原谅我的语法错误

在Mongoose中, Model.find()将返回一个文档数组,在这里我需要根据用户需要更改文档在数组中的位置。

为此,我编写了流畅的代码 请检查我的代码,并告诉我我的方法可以

如果可以的话,请分享一个更好的想法来进行此类操作

我正在使用猫鼬模式

const mongoose = require("mongoose");
const { Schema, model } = mongoose;
const categorySchema = new Schema(
{name: String,
position:Number
},
{
timestamps: true
}
);
const Category = model("Category", categorySchema);

使用此模型创建一些实例

const category1 = new Category({name:'Nodejs',position:1});
await category1.save();

const category2= new Category({name:'Reactjs',position:2});
await category2.save();

const category3 = new Category({name:'Vuejs':position:3});
await category3.save();

现在,如果我通过“类别”模型进行查询,则它将返回一个看起来像这样的类别数组

const categories = await Category.find().sort({position:1});
categories // [{name:'Nodejs'},{name:'Reactjs'},{name:'Vuejs'}]

因此,如果我需要移动类别位置,则可以更改位置值

await Category.findOneAndUpdate({name:'Nodejs'},{$set:{position:2}})
await Category.findOneAndUpdate({name:'Reactjs'},{$set:{position:1}})

现在类别数组文档的位置已更改

const categories = await Category.find().sort({position:1});
categories // [{name:'Reactjs'},{name:'Nodejs'},{name:'Vuejs'}]

当用户需要更改类别位置/顺序时,可以更改类别的位置值

还有更好的方法吗?

0 个答案:

没有答案