我在一个集合中有一个数组数组,我需要知道使用addToSet在该数组中添加一个项目。以下是我的文档结构
db.Timeline.insert({
Email : "sk.sagarkhan95@gmail.com",
BlogPosts :[{
Title : "Party Time",
Name : "Sagar Khan",
Description : "Some Description",
Date : new Date(),
Image : "users/sk.sagarkhan95@gmail.com/pictures/prof-pic.jpg",
Likes : ["hs@gmail.com"],
Comments : [ { **<-- Need to addToSet in this array**
email : "hs@gmail.com",
Name : "Harish Shinde",
Image : "users/hs@gmail.com/pictures/prof-pic.jpg",
comment : "Wow its soo true",
Time : new Date()
}]
}]
});
正如您所看到的,Timeline集合中有两个数组 即
BlogPosts-&GT;评论
我需要在评论数组中添加一个项目,这意味着我需要达到2级......我不知道如何做到这一点
我尝试过这样的事情,看看之前的解决方案,但没有运气
db.Timeline.update({Email :" sk.sagarkhan95@gmail.com"},{$addToSet:{ "BlogPosts.Comments":{"Title":"null"}}});
和这个
db.Timeline.update({Email :" sk.sagarkhan95@gmail.com"},{$addToSet:{ 'BlogPosts.$.Comments':{"Title":"test"}}});
是的,我需要在php中这样做,但首先我是通过控制台尝试... 所以,如果我得到PHP语法,那么它将使我的工作更容易... 提前谢谢
答案 0 :(得分:2)
要使其正常工作,您必须指定BlogPosts
中的哪个元素需要在email
之上更新,因为您尝试将数组添加到数组中。您必须告诉Mongo您尝试将阵列添加到哪个阵列。更新时使用位置运算符$
db.Timeline.updateOne(
{"Email": "sk.sagarkhan95@gmail.com", "BlogPosts.Title" : "PartyTime"},
{$addToSet : {"BlogPosts.$.Comments" : {"Title" : "test"}}}
)