如何在 sailsJs 中使用 mongoDB 仅在数组中获取 _id 字段

How to fetch _id field only in array using mongoDB in sailsJs

我在 sailsJs 中从 mongoDB 检索数据时遇到问题。我想要一个 _id 字段的纯数组,但它 returns 一个 JSON 对象的数组,类似于

[
      {_id: 'sdfdsr3434redf'},
      {_id: '6sdgydewu7fr3'}, 
      ...
]

但我只想要像这样的 ID 列表:

['sdfdsr3434redf', '6sdgydewu7fr3', ...]

代码如下:

  let userIDList = await col.find({
                        $or: [
                            {permission: 'student'},
                            {permission: 'staff'}
                        ]
                },{ select : ['_id'] }).toArray();

我尝试了一种方法,效果很好(@atishay_jain),

let userIDList = await col.find({
                 $or: [
                      {permission: 'student'},
                      {permission: 'staff'}
                 ]},{ select : ['_id'] }).toArray();

let final = userIDList.map((v, i) => { return v._id });
console.log(final);

但我需要一些捷径来让它更相关。提前致谢:)

如果您想在 javascript 中完成。这是代码。

let userIDList = await col.find({
                 $or: [
                      {permission: 'student'},
                      {permission: 'staff'}
                 ]},{ select : ['_id'] }).toArray();

let final = userIDList.map((v, i) => { return v._id });
console.log(final);

获取所有文档后,需要遍历并解析值。

由于数据库查询提供的是{key:value},你必须获取key的值。

试试这个,

    let userIDList = [];

    await col.find({
        $or: [
            { permission: 'student' },
            { permission: 'staff' }
        ]
    },{ select : ['_id'] }).toArray().forEach(function(obj) { 
        userIDList.push(obj._id) 
    });
    console.log(userIDList);

您只能获取如下所示的 _id 列

let userIDList = await col.find({
                        $or: [
                            {permission: 'student'},
                            {permission: 'staff'}
                        ]
                },{_id:1}).toArray();

如果你想在一条命令中做到这一点,你可以试试"distinct"命令。

col.distinct("_id", {
    $or: [{permission: 'student'}, {permission: 'staff'}]
})