如何在MongoDB Realm函数中按id查找文档



我正在MongoDB Realm中编写一个函数,我想将其用作GraphQL的自定义解析器。函数的一部分应该通过id获取特定的文档。根据文档,我可以使用context.services.get('mongodb-atlas')访问Atlas DB。以下是简化的代码摘录:

exports = async () => {
const cluster = context.services.get('mongodb-atlas');
const collection = cluster.db('my-db').collection('my-coll');
return await collection.findOne({"_id": "61d33d2059c38ef0584c94f8"});
}

但是,findOne()调用返回null。我知道上面的id是有效的,因为我可以成功地调用collection.find()并列出所有带有id的文档。

我尝试过的

  • findOne({"_id": "61d..."})-返回null
  • CCD_ 7-错误:";ObjectId";未定义
  • 此处建议使用const ObjectId = require('mongodb').ObjectId显式声明ObjectId-错误:";MongoDB Node.js驱动程序不受支持
  • const ObjectId = require('bson').ObjectId-findOne()声明ObjectId会再次返回null

您能推荐其他途径进行查找吗?

我建议的第一件事是-让我们确定脚本在哪里失败。我们确信,以下内容应该有效。

exports = async () => {
let tmp_collection = context.services.get("mongodb-atlas").db("my-db").collection("my-coll");
return await tmp_collection.findOne({});
}

在你可以确认以上工作后,尝试一下:

return await context.services.get("mongodb-atlas").db("my-db").collection("my-coll").findOne({"_id":new BSON.ObjectId("61d33d2059c38ef0584c94f8")});

这是您的代码,但已修复:

exports = async () => {
const cluster = context.services.get('mongodb-atlas');
const collection = cluster.db('my-db').collection('my-coll');
return await collection.findOne({"_id": new BSON.ObjectId("61d33d2059c38ef0584c94f8")});
}

相关内容

  • 没有找到相关文章

最新更新