这是我的电影数据库架构:
我有这个代码,它检索
title
和
reviews
按创建日期降序排列的对象数组(工作):
db.films.findOne({ _id: ObjectId('64d69473da87c0c91ae7c596') },
{title:1, reviews:{$sortArray:{input:"$reviews", sortBy:{creationdate:-1}}} } )
我试图扩展这一点,发现所有带有该元素的评论都不等于特定的
userid
:
db.films.findOne(
{ _id: ObjectId("64d69473da87c0c91ae7c596") },
{
title: 1,
updatedreviews: {
$sortArray: {
input: [
{
$cond: [
{
$not: {
$in: [
ObjectId("64d95f9b4ce0a13e8fc37567"),
"$reviews.userid",
],
},
},
"$reviews",
null,
],
},
],
sortBy: { "$reviews.creationdate": -1 },
},
},
}
);
它不起作用:它正在检索
null
.我试了相反的方法,等于
$in
具体
userid
但它正在返回所有评论:
db.films.findOne(
{ _id: ObjectId("64d69473da87c0c91ae7c596") },
{
title: 1,
updatedreviews: {
$sortArray: {
input: [
{
$cond: [
{
$in: [
ObjectId("64d95f9b4ce0a13e8fc37567"),
"$reviews.userid",
],
},
"$reviews",
null,
],
},
],
sortBy: { "$reviews.creationdate": -1 },
},
},
}
);
关于如何解决这个问题并检索所有非该特定用户的评论的任何想法
ObjectId
?