MongoDB / Node.js:交换不同对象之间的字段

时间:2016-05-19 11:57:49

标签: javascript node.js mongodb express

我目前正在编写一个小型Javascript应用程序,它允许您重新排序MongoDB数据库中的元素。数据库中的每个条目都有一个名为“order”的字段,表示它的位置。

因此,当您在数据库中选择一个条目以向上移动时,我想在理论上相邻的元素之间交换“order”字段,其位置为“order-1”。

这是我到目前为止的代码:

collection.find({ "name": request.body.itemToMove }).toArray(function(err,doc) {
 ordernum = doc[0].order;
});

这里我从MongoDB元素中获取了order字段。我现在需要使用ordernum - 1查找数据库条目,该条目位于我们想要在列表中向上移动的条目上方。

除了显然我使用doc [0] .order获取的对象不是我可以使用数学运算符的数据类型。

swapIndex = ordernum - 1

不起作用,但是

console.log(ordernum);

向控制台打印一个数字。我还以为我可以测试只是使用对象本身查询我的数据库,但查询失败。

collection.find({ "order": ordernum }).toArray(function(err,doc) {
//Do something
});

这也失败了。有没有办法让我找到一种方法来交换“订单”字段?

1 个答案:

答案 0 :(得分:0)

我认为你正试图解决这个问题,特别是当你可以使用更通用的方法时。

说你正在将项目从第5位移动到3

db.items.update({"position": {"$gte": 3, "$lt": 5}}, {"$inc": 1})
// we now have 1, 2, 4, 5, 5, 6
db.items.update({"name": request.body.itemToMove}, {"$set": {"position": 3})
// and now it is 1, 2, 3, 4, 5 with the old 5 at 3

注意:我没有对这两行进行测试,将它们写在了我的头上。