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

时间:2018-10-12 06:04:56

标签: node.js mongodb mongoose sails.js

我在从mongoDB的{​​{1}}检索数据时遇到问题。我想要一个sailsJs字段的纯数组,但是它返回一个JSON对象数组,类似于

_id

但是我只想要ID列表,例如:

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

代码在下面:

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

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

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

但是我需要一些捷径来使其更相关。在此先感谢:)

4 个答案:

答案 0 :(得分:3)

如果要在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);

答案 1 :(得分:1)

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

由于数据库查询提供了{键:值},因此您必须获取键的值。

尝试一下

    let userIDList = [];

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

答案 2 :(得分:1)

如果要在一个命令中执行此操作,则可以尝试“ distinct”命令。

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

答案 3 :(得分:0)

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

buildpack-deps:stretch