在数组中查找或更新的MongoDB查询无法正常工作

时间:2015-12-04 11:29:24

标签: node.js mongodb mongoose

我正在开发一个新项目,第一次使用下面的架构收集大量消息 -

 mongoose.model('Messages', {
    owner: { type: Schema.Types.ObjectId, ref: 'User' },
    messages: [{
        with: { type: Schema.Types.ObjectId, ref: 'User' },
        from: {id: { type: Schema.Types.ObjectId, ref: 'User' }, user: String},
        to: [{id: { type: Schema.Types.ObjectId, ref: 'User' }, user: String}],
        sent: {type: Date, default: Date.now},
        message: String,
        seen: {type: Boolean, default: false},
        stared: {type: Boolean, default: false}
    }]
})

我使用的大部分用过的查询都是查找用户(所有者)与其他用户(messages.with)的消息,其中发送日期(messages.sent)大于日期 -

Messages.findOne({owner: owner.id, "messages.with": user.id, messages.sent: {$gt: mydate}},{messages: 1, owner: 1}, function (err, doc){}..)

只有当我输入的日期更大(之后)消息时我才会收到该文件。 我在查询中使用的日期设置为新日期('2015-12-04T03:39:23.126Z'),因此我没有看到日期格式的任何问题

以及更新 -

Messages.update({owner: owner.id, "messages.with": user.id}, {$set:{"messages.$.seen": true}}, function(err, numEffected) {})

只是不起作用。
现在我用另一个功能检查数据,但只是不必要 请帮我搞清楚 感谢

1 个答案:

答案 0 :(得分:0)

更新不起作用,我遇到了问题,当我使用findOneAndUpdate(条件,更新,回调)。然后它对我有用