我有这个系列:
[
{
username : "User1",
theme : [
{
name : "Theme1",
posts : [
{
text : "test1",
postdate : 1,
comments : [
{username: "User1"}
]
},
{
text : "test2",
postdate : 2,
comments : [
{username: "User2"}
]
},
{
text : "test3",
postdate : 3,
comments : [
{username: "User3"}
]
}
]
}
],
},
我想检查文章“test1”的帖子“User1”是否有评论。到目前为止我已经尝试过这个,但它不起作用:
db.user.find({ "theme.posts.text" : "test1" , "theme.posts.comments.username" : "User1"});
编辑:
问题是,当我搜索“test1”时,我得到了一个结果,当我搜索“test2”时,我也得到了一个结果。但是当文本“test1”的帖子有“User1”的评论时,我只想要一个结果。所以我想检查一个带有文字X的帖子是否有人Y的评论。
什么是正确的解决方案?
谢谢!
答案 0 :(得分:1)
问题是评论是一个数组。所以theme.posts.comments没有名为username的属性。而是theme.posts.comments [0]有一个名为username的属性。
一种解决方案是使用文本获取所有结果:“test1”然后在数组result.comments上使用javascript函数indexOf,并查看对象{userName:'User1'}是否存在于数组中。
它看起来像这样:
render