我有类似的数据:
"_id" : ObjectId("5aff8a15fac9291cb0477c87"),
"user" : ObjectId("5adbf5ffd08592252c0efeba"),
"createdTime" : ISODate("2018-05-19T02:21:09.943Z"),
"category" : [
{
"_id" : "c1bf0790-5b0b-11e8-8c5d-cd2d06b6e60a",
"catname" : "art",
"introduction" : "The world is waiting for a new way in art",
"banner" : null
},
{
"_id" : "vhjv87t8g-11e885b0b-sjhvikawik",
"catname" : "art",
"introduction" : "The world is waiting for a new way in art",
"banner" : null
}
],
当我尝试查询数组类别中的单个对象时,看起来像这样
newCat = user.category.find(element => element.catname.toString() === category.catname.toString() );
Model.findByIdAndUpdate({'category._id': newCat._id}, {$set: {
"category.$.catname": catalog.catname,
"category.$.intro": catalog.introduction,
"category.$.lastUpdate": catalog.lastUpdate,
}
}, cb);
因此,要获取带有catname的类别或使用catname更新数据,我在这里找到了 here我必须在添加后添加_id,结果与我给出的整个数据相同,我不想更新我想要只更新已创建对象的整个数据。稍后,我研究了dot.notation用于数组我将我的变量更改为此
newCat = user.category.findIndex(element => element.catname.toString() === category.catname.toString() );
结果也一样,我尝试了很多路线,浪费了一天。我希望任何人都能找到解决方案。即使javasceipt更新数组也比mongoose简单得多。我厌倦了在mongodb中使用数组。 问候,谢谢。