Nodejs mongoskin.findItems()返回指定列

Nodejs mongoskin.findItems()返回指定列

findItems({},{_id:0,test:1}) 返回的数据带有所有字段,test:1无效问题

4 回复

当然,可以帮你解决这个问题。mongoskin 是一个用于 Node.js 的 MongoDB 驱动库,但请注意,mongoskin 已经不再维护,建议使用 mongodb 官方驱动库。不过,我们可以先讨论如何使用 mongoskin 来实现你的需求。

解释

在 MongoDB 查询中,你可以通过指定投影(projection)来选择需要返回的字段。投影是一个对象,其中键是你想要包含的字段名,值为 1 表示包含该字段,0 表示排除该字段。

示例代码

假设你有一个集合 items,并且你想只返回 test 字段:

const mongo = require('mongoskin');
const db = mongo.db("mongodb://localhost:27017/testdb?auto_reconnect", {native_parser:true});

// 查询并只返回 test 字段
db.collection('items').find({}, {_id: 0, test: 1}).toArray((err, docs) => {
    if (err) {
        console.error('Error fetching documents:', err);
        return;
    }
    console.log(docs);
});

详细说明

  • db.collection('items'):获取名为 items 的集合。
  • .find({}, {_id: 0, test: 1}):第一个空对象 {} 表示匹配所有文档,第二个对象 {_id: 0, test: 1} 是投影,表示不返回 _id 字段,只返回 test 字段。
  • .toArray():将查询结果转换为数组,并通过回调函数处理结果。

注意事项

  • 如果你只想返回特定字段(如 test),你需要确保其他字段也被明确排除(如 _id)。
  • 如果你发现 test: 1 没有生效,可能是因为你在其他地方设置了默认的投影或查询条件。

希望这能帮助你解决问题!如果你有任何进一步的问题,请随时提问。


mongoskin 现在还有人在维护?

没人维护,可是在用。。。

在使用 mongoskin 进行数据库查询时,如果希望只返回某些特定的字段(即投影),可以通过指定查询条件和投影对象来实现。你提到的 {_id:0, test:1} 的方式是正确的,但是 mongoskin 的用法可能需要一些调整。

以下是具体的解决方法及示例代码:

示例代码

const mongo = require('mongoskin');

// 假设 MongoDB 地址为 'localhost:27017',数据库为 'testdb'
let db = mongo.db('localhost:27017/testdb', { native_parser: true });

db.collection('yourCollection').find({}, {_id: 0, test: 1}).toArray(function(err, docs) {
    if (err) {
        console.error("Error fetching documents:", err);
        return;
    }
    console.log(docs);
});

解释

  • find(query, projection) 方法中的 query 是查询条件,这里设置为空 {} 表示不加限制地查找所有文档。
  • projection 对象用于指定返回哪些字段。{_id: 0, test: 1} 表示不返回 _id 字段,并且返回 test 字段。
  • .toArray() 方法将结果转换成数组形式。如果不调用 .toArray(),则结果将是一个游标,你需要通过迭代器来获取数据。

确保你的 mongoskin 版本是最新的,并且正确安装了依赖。如果你发现某些操作不起作用,可能需要查看 mongoskin 的版本更新或考虑迁移到更现代的 MongoDB 驱动库,例如 mongodb 官方驱动。

如果你仍然遇到问题,请提供更多的错误信息或者环境细节以便进一步诊断。

回到顶部