首页 > 解决方案 > 将值分配给相对于 MongoDB 文档数组的 NodeJS 变量

问题描述

我有一个包含以下文档的 MongoDB 集合

> db.mycol.find()
{ "_id" : ObjectId("5ec6506171ae442136aa97d2"), "uname" : "mail1", "port" : 1000, "abc" : "test1" }
{ "_id" : ObjectId("5ec659e6c0b1cc11370d8378"), "uname" : "mail2", "port" : 1001, "abc" : "test2" }

在下面的代码中,我试图通过在 NodeJS 中port使用来获取文档字段数组。distinct

var nextPort=0;
MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("mydb");
    dbo.collection("mycol").distinct('port', function(err, result) {
      if (err) throw err;
      console.log(result);
      db.close();
    });
  });

上面的代码给出了一个输出 [ 1000, 1001 ] 现在,我有一个名为的变量,nextPort我希望它具有已经存在的端口的下一个值(应该是唯一且未使用的),即如果数组的最后一个元素是1001then nextPort=1002

如何将数组元素中的下一个值(唯一)分配给我的变量。还有一种方法可以port像我们primary key在文档字段中一样拥有所有唯一值MySQL

标签: javascriptarraysnode.jsmongodbmongodb-query

解决方案


不确定这是否会有所帮助,但您可以尝试将输出分配给变量,例如“数组”。然后使用 nextPort = array[array.length-1]+1 参见下面的代码示例:

let nextPort=0; 
let arr = [1000, 1001];
nextPort = arr[arr.length-1]+1

或者如果你想让 nextPort 成为一个数组:

let nextPort=[]; 
let arr = [1000, 1001];
nextPort.push(...arr, arr[arr.length-1]+1);

上面的代码假设你的 Mongo 代码总是返回一个数字。


推荐阅读