我有一个餐馆集合,其中每个文档都包括名称、位置、评论等数据,我正在尝试将包括两条评论的数据推送到位于布鲁克林行政区的餐馆。该文档当前碰巧没有“评论”数组字段。根据我所看到的所有内容,$PUSH函数应该自动将数组添加到文档中,但它没有。以下是代码:
db.restaurants.updateOne(
{ borough: 'Brooklyn' },
{
$push: {
reviews: {
$each: [
{
name: 'Frank Zappa',
date: 'January 3, 2019',
rating: 3,
comments: 'This restaurant is not good',
},
{
name: 'Freddie Mercury',
date: 'January 3, 2019',
rating: 5,
comments: 'This restaurant is my favorite',
},
],
},
},
}
);
接下来的下一条命令是将相同的评论推送到另一家已经有数组字段“Review”的餐馆,并将其分割为2。这两者之间唯一的代码差异是过滤器和切片修饰符。第二种方法效果很好,而第一种方法就不行了。
我误解了推送应该如何工作吗?在本例中,使用Push是必需的,尽管我也尝试了使用相同的addToSet
2条答案
按热度按时间ezykj2lf1#
https://mongoplayground.net/p/MxH01R4dxjU
您的查询似乎运行正常,请检查您在筛选操作中提供的值是否正确
jjhzyzn02#
事实证明,我没有足够注意到有多少文档有“borough”:“Brooklyn”字段,而且有不止一个。更改为更新Many,问题已解决。感谢您的时间和关注!