【问题标题】:Query _id in mongodb在mongodb中查询_id
【发布时间】:2019-10-13 05:28:24
【问题描述】:

我正在尝试查询特定文档,然后删除该文档。

我可以通过这个成功查询文档:

export async function findRecord(database, sub_db, query) {
    let output = "";
    const mongo = require('mongodb').MongoClient
    const url = "mongodb+srv://...";
    const client = await mongo.connect(url, {useNewUrlParser: true,useUnifiedTopology: true});

    const db = client.db(database)
    const collection = db.collection(sub_db)
    const items = await collection.find(query).toArray();
    client.close()
    return items;
}

但是当我 console.log 数据时,我的 _id 在一个数组中。看起来像这样:https://share.getcloudapp.com/rRun6j5J

在 MongoDB 文档中,我看到这样的查询:{"_id" : ObjectId("568c28fffc4be30d44d0398e")},但因为它打印一个数组,我无法让它看起来像那样。

前端:

export async function button3_click(event) {
    let query = {}
    let output = await findRecord("domains","domains", query)
    console.log(output)
    let record_to_delete = output[0]._id
    console.log(record_to_delete)
    await deleteRecord("domains","domains",record_to_delete)
}

后端:

export async function deleteRecord(database, sub_db, record_idobj) {
    let output = "";
    const mongo = require('mongodb').MongoClient
    const url = "mongodb+srv://...";
    const client = await mongo.connect(url, {useNewUrlParser: true,useUnifiedTopology: true});

    const db = client.db(database)
    const collection = db.collection(sub_db)
    await collection.deleteOne({"_id": record_idobj})
    client.close()
}

我的最终目标是能够通过 _id 删除...

注意:我的前端代码可能看起来很奇怪,因为我在 Wix 代码中,但其他一切都应该没问题。

【问题讨论】:

    标签: javascript node.js mongodb


    【解决方案1】:

    请尝试使用findOne 而不是find

    collection.findOne({_id: _id})

    【讨论】:

      【解决方案2】:

      只要我明白,你的问题的答案就给here

      您只需要从您的 char 数组中创建一个字符串,这可以使用 charArray.join(""); 轻松完成,然后您使用 ObjectId(string) 创建一个 ObjectId

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-12
        • 2016-07-04
        • 1970-01-01
        • 2016-01-23
        • 2011-06-01
        相关资源
        最近更新 更多