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

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

Mongodb生成一条数据

{ 
    _id: 5ec8a72dcac5690e270539a2,
    title: '生活是什么?',
    content: '<p>生活是什么?生活是柴米油盐的平淡;是行色匆匆早出晚归的奔波;生活是错的时间遇到对的人的遗憾;是爱的付出与回报;生活是看不同的风景,遇到不同的人;是行至水穷尽,坐看云起时的峰回路转;生活是灵魂经历伤痛后的微笑怒放;是<a href="https://www.lz13.cn/lizhimingyan/7464.html">挫折</a>坎坷被晾晒后的<a href="https://www.lz13.cn/mingrenmingyan/8754.html">坚强</a>;生活是酸甜苦辣被岁月沉淀后的馨香;是经历风霜雪雨洗礼后的懂得;生活是走遍千山万水后,回眸一笑的洒脱。<br></p>',
    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('删除成功')
            }
        })
    })

参考引用

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。