我可以在 findAndUpdate 时检查其他 mongo 模式中的值吗?
示例:
架构 1:
{ _id: 'myId1', name: 'test' }
架构 2:
{ _id: 'myId2', name: 'test-rest', connectedId: [ 'myId1' ] }
现在我想在更新时检查 connectedId 是否有值名称
await MongoModel.findOneAndUpdate(
{
_id: "myId",
connectedId: { connectedValue.name === 'test' } // Now I want check if value from this connectedId has a value equal to my value
},
{
name: "changeName"
}
)
答案 0 :(得分:0)
编辑:我完全忽略了您还想更新参考文档。但是,我会留下这个答案,以防其他人觉得它有用。
您应该结帐populate from Mongoose documentation。您可以在定义架构时添加对其他模型的引用:
connected: [{ type: Schema.Types.ObjectId, ref: 'OtherModelName' }]
OtherModelName 应该与您在调用 mongoose.model('OtherModelName', yourSchema);
时命名其他模型的方式相匹配。之后,您可以populate
带有某些条件的字段。此示例来自上述文档:
Story.
find().
populate({
path: 'fans',
match: { age: { $gte: 21 } },
// Explicitly exclude `_id`
select: 'name -_id'
}).
exec();
在你的情况下,它会像
YourModel
.find()
.populate({
path: 'connected',
match: {name: 'test'}
})
.exec();