首先,一点背景:
我正在尝试检查图像的二进制数据是否已保存在 Mongo 中。给定以下架构:
var mongoose = require('mongoose')
, Schema = mongoose.Schema;
var imageSchema = new Schema({
mime: String,
bin: { type: Buffer, index: { unique: true }},
uses : [{type: Schema.Types.ObjectId}]
});
module.exports = mongoose.model('Image', imageSchema);
...我想查询图像是否存在,是否添加了我的对象正在使用它的引用,然后更新它。如果没有,我想创建(更新插入)它。
鉴于它不存在,下面的代码可以完美运行。如果是,则下面的代码不会,并将另一个 Image 文档添加到 Mongo。我觉得这可能是 Mongo Buffer 类型与节点 Buffer 的比较问题,但我不知道如何正确比较它们。请让我知道如何更新以下内容!谢谢!
Image.findOneAndUpdate({
mime : contentType,
bin : image
}, {
$pushAll : {
uses : [ myObject._id ]
}
}, {
upsert : true
}, function(err, image) {
if (err)
console.log(err);
// !!!image is created always, never updated!!!
});