Mongodb的ObjectId作为查询/删除条件

使用Mongodb插入数据时,会自动的生成ObjectId做为数据的主键。可当我们直接使用id时,条件却不生效,那么应该如何通过ObjectId来做条件了?

Mongodb生成一条数据

{ 
    _id: 5ec8a72dcac5690e270539a2,
    title: '生活是什么?',
    content: '

生活是什么?生活是柴米油盐的平淡;是行色匆匆早出晚归的奔波;生活是错的时间遇到对的人的遗憾;是爱的付出与回报;生活是看不同的风景,遇到不同的人;是行至水穷尽,坐看云起时的峰回路转;生活是灵魂经历伤痛后的微笑怒放;是挫折坎坷被晾晒后的坚强;生活是酸甜苦辣被岁月沉淀后的馨香;是经历风霜雪雨洗礼后的懂得;生活是走遍千山万水后,回眸一笑的洒脱。

', createTime: 1590208301037, username: '桃白白' }

上面的_id值5ec8a72dcac5690e270539a2就是mongodb自动分配的。

使用ObjectId作为条件

_id的值5ec8a72dcac5690e270539a2并非字符串,而是ObjectId对象类型。因此简单的使用是不行的:

    var model = require('../model')

    model.connect(function(db) {
        db.collection('articles').deleteOne({_id: id}, function(err, result) {
            if (err) {
                console.log('删除失败: ', err)
            } else {
                console.log('删除成功')
            }
        })
    })

需要将上面的id转为ObjectId对象类型,参考如下:

    var model = require('../model')
    // 引用ObjectId类型
    var ObjectId = require('mongodb').ObjectId

    model.connect(function(db) {
        db.collection('articles').deleteOne({_id: ObjectId(id)}, function(err, result) {
            if (err) {
                console.log('删除失败: ', err)
            } else {
                console.log('删除成功')
            }
        })
    })

参考引用

  • MongoDB ObjectId: https://www.runoob.com/mongodb/mongodb-objectid.html

你可能感兴趣的:(Mongodb的ObjectId作为查询/删除条件)