使用mongoose对抗mongodb 2.6 - 另一个问题是听起来与我的相似;
https://github.com/LearnBoost/mongoose/issues/1677
我有这段代码:
$addToSet: {
invite_list: {
$each : [
{ email: 'test@test.com' },
{ email: 'test@test.com' },
{ email: 'test@test.com' },
{ email: 'test@test.com' }]
}
}
应该只存储一个项目,而是存储4个项目!
但是,将查询更改为此
$addToSet: {
invite_list: {
$each : [
'test@test.com',
'test@test.com',
'test@test.com',
'test@test.com' ]
}
}
按预期返回一个项目。
模型架构字段:
invite_list: [{email: {type: String, trim: true}}],
查询看起来像这样;
UserModel.findOneAndUpdate(
{
_id: req.params.id,
},
{
$addToSet: {invite_list: { $each : [{ email: 'test@test.com' },
{ email: 'test@test.com' },
{ email: 'test@test.com' },
{ email: 'test@test.com' }] }}
}, function (err, user) {
// morel logic here...
return res.status(200).json(user);
});
http://docs.mongodb.org/manual/reference/operator/update/addToSet/
是否有遗漏的东西。
感谢。
Ĵ
答案 0 :(得分:3)
读完之后,它让我思考;
Stop Mongoose from creating _id property for sub-document array items
找到修复程序;
模型现在看起来像这样;
var subSchema = new mongoose.Schema({email: {type: String, trim: true, _id: false}},{ _id : false })
invite_list: [subSchema],
按预期工作......
Ĵ