我想使用mongoose从多个文档更新多个子文档。
我目前的代码是:
const ids: any[] = payload.imageIds.map(e => new ObjectId(e));
await this.userModel
.updateMany({ 'images._id': { $in: ids } }, { $inc: { 'images.$.views': 1 } })
.exec();
模式的一部分是:
export const UserSchema = new mongoose.Schema(
{
images: [ImageSchema],
}
const ImageSchema = new mongoose.Schema(
{
views: { type: Number, default: 0 },
},
但是这段代码只更新id arr中的最后一个元素。
解决了!
对于遇到同样问题的人:
const imageIds: ObjectId[] = payload.imageIds.map(e => new ObjectId(e));
const userIds: ObjectId[] = payload.userIds.map(e => new ObjectId(e));
await this.userModel
.updateMany(
{ _id: { $in: userIds } },
{ $inc: { 'images.$[element].views': 1 } },
{
arrayFilters: [
{
'element._id': { $in: imageIds },
},
],
},
)
.exec();
我试图更新一个子文档(有效),然后更新除上一个子文档之外的多个子文档。基本上,每次
在我的用例中,我希望使用spring-data-mongo一次更新多个文档,即与查询匹配的文档。 这是我一直在尝试的, MongoDB-3.6 spring-data-mongoDB-1.5.5.release
我有一份这样的文件: 我想通过将其与数量字段(2*800)相乘来更新价格字段,其中的结果将更新/分配给价格。(对于本例,价格更新为1600)。 更新后的文档: 我的选择查询如下: 我怎样才能做到这一点?
我想通过猫鼬进行API调用,以将一批选定的(下面的模式)子文档的日期字段更新为当前日期。 Player模式: 我创建了一个复选框,用户可以在其中选择多个(以及他们的数组中的特定'卡片'子文档),并将所有选定的的特定卡片的日期更改为相同的日期...作为反应,我将相应的ObjectIds在主体中批处理在一起,并将选定的玩家/卡片组合发送到一个对象数组中,如下所示(其中数字表示相同的分组玩家 我正在发送
我想知道mongoose是否有一些方法可以通过id集更新多个文档。例如: 我想知道的是,如果猫鼬能做这样的事情: 其中,ids是一个id数组,如['id1','id2','id3']-示例数组。对于find,同样的问题。
我在MongoDB中使用Java驱动程序。我有一个集合中的文档id列表。我想在每个文档中更新一个字段,该文档的“\u id”等于列表中的一个文档id。在下面的示例中,我尝试了以下方法: 我的目的是用\u id=123、\u id=456和\u id=789更新文档,将其“field”属性设置为59。 我这样做对吗?