我正在尝试根据子文档的Id和父文档的Id更新子文档中的特定字段。我是新手,所以我可能误会了mongoDb文档,但据我所知,findOneAndUpdate应该可以工作。我还尝试了just update、updateOne以及FindByIdandUpdate。我尝试的任何操作都没有成功更新我的对象。
{
"_id": {
"$oid": "5c97cf50cc81525a75eb6c19"
},
"email": "email@gmail.com",
"password": "$2b$10$6ixbu2Ka.Zj0eE5kF21MLO6CiMblgu4D6IHiC7Ta52o.cZFMNw1Mm",
"__v": 0,
"savedBeers": [
{
"id": 2,
"comment": null,
"rating": 0
},
{
"id": 4,
"comment": null,
"rating": 0
}
]
}
前端:
function addRating(beerId, ratingValue){
let userId= localStorage.userId
console.log(beerId, userId, ratingValue);
$.ajax({
type: "PUT",
url: `/user/${userId}/${beerId}/${ratingValue}`,
success: addRatingSuccess,
error: addRatingError
});
function addRatingSuccess(response) {
console.log("added", response);
}
function addRatingError() {
console.log("error");
}
}
后端UserController.js:
addRating:(req,res)=>{
console.log(req.params);
req.params.beerId = parseInt(req.params.beerId)
req.params.ratingValue = parseInt(req.params.ratingValue)
db.User.findOneAndUpdate(
{_id: ObjectId(req.params.userId), "savedBeers.id": req.params.beerId },
{ $set: { 'savedBeers.$.rating' : req.params.ratingValue } },
{new:true})
.exec(function (err, doc){
if (err){
console.log(err);
res.json({
"error": err
})
} else {
console.log(doc);
res.json({
doc
})
}
})
}
这是我在前端得到的回应:
added
{doc: {…}}
doc:
email: "email@gmail.com"
savedBeers: Array(2)
0: {id: 2, comment: null, rating: 0}
1: {id: 4, comment: null, rating: 0}
length: 2
__proto__: Array(0)
__v: 0
_id: "5c97cf50cc81525a75eb6c19"
__proto__: Object
__proto__: Object
{ userId: '5c97cf50cc81525a75eb6c19', beerId: 4, ratingValue: 3 }
{ savedBeers:
[ { id: 2, comment: null, rating: 0 },
{ id: 4, comment: null, rating: 0 } ],
_id: 5c97cf50cc81525a75eb6c19,
email: 'email@gmail.com',
__v: 0 }
在“{$SET:{”Saved Beers.$“:Req.Params.RatingValue}”中的“SavedBeers.$”后面似乎缺少了“.Rating”
因此该行应为“{$SET:{”Saved Beers.$.Rating“:Req.Params.RatingValue}”
问题内容: 我的文件 夹Folder 具有以下架构: 因此,对于每个页面,我可以拥有许多权限。在CMS中,有一个面板,其中列出了所有文件夹及其权限。管理员可以编辑一个权限并保存。 我可以很容易地用其权限数组保存整个 Folder 文档,其中只修改了一个权限。但是我不想保存所有文档(实际架构中包含更多字段),所以我这样做了: 但是问题是 烫发 总是 不确定的 !我试图以这种方式“静态地”获取许可:
我是新来的mongo。我有以下收藏。 文件: 请求: 文档集合中的typeId是文档类型的id,其中请求中的typeId是也可以为空的外部字段。如何获得以下输出。
我已经实现了Serializable、实现了hashCode和equals。 我在MongoDB文档类中使用自定义键类,如下所示。 我可以使用spring data mongodb将文档保存到mongodb中。 我首先使用的标准如下。 根据上述标准,我然后执行一个update状态, 但是,我的更新失败,出现错误,
问题内容: 我有Mongoose架构,其中有一个天属性 我想查找输入的最后一天的数据,所以说今天就是我要查找输入的最后一天。或者说另一种说法。什么是属性小于等于但大于所有其他文档的文档呢? 或另一种方式 属性小于等于的所有文档集中的最大元素是什么 然后遍历我所有的文档,我该怎么做呢? 问题答案: 在外壳中将是: 查找所有小于16085 的文档,对它们进行降序排序,然后采用第一个。 在Mongoos
以下是两种猫鼬模式: 雇员模式: 员工详细模式: 雇员详细模式数据会按需保存,例如当特定状态分配给雇员时。在这种情况下,一旦保存了雇员详细信息文档,相应的雇员详细信息ID就会保存回雇员模式作为雇员详细信息ID 现在,员工模式和员工模式之间存在双向关系。 用例: 我想找到所有被标记为特定状态的员工。假设输入状态ID为,那么我想获取EmployeeDetail文档中状态ID为的所有员工。 以下是我尝试
排序文档 服务器保存文档的次序是根据它们添加表时的次序。Navicat 的排序功能是暂时重新排列文档,以便你可以用一个不同的序列查看或更新它们。 将光标移动到你想要排序内容的字段标题,点击字段的右侧并选择“升序排序”、“降序排序”或“移除排序”。 若要按自定义次序来排序多个字段,请在工具栏点击 “排序”。 查找和替换 查找文档 查找栏能在查看器中快速搜索文本。只需简单地选择“编辑”->“查找”或按