gpt4 book ai didi

node.js - MongoDB $project 和 $in 总计

转载 作者:太空宇宙 更新时间:2023-11-04 00:02:40 28 4
gpt4 key购买 nike

我有以下结构:

{  
"_id":"some_id",
"tweets":[
{
"id":"1077633161922785281",
"created_at":"Tue Dec 25 18:32:21 +0000 2018",
"favorite_count":1905,
"retweet_count":27,
"media":[

],
"text":"Chillin",
"avatar":"https://pbs.twimg.com/profile_images/1062579676508381184/gDukIs20_normal.jpg",
"name":"Chance Morris",
"display_name":null,
"user_id":"1087348778",
"likedBy":[
"some-random-dude"
],
"likes":1
}
]
}

如果数组中存在用户 ID,我想将该 likedBy 数组投影到 liked: true/false

  return db().collection('gamers').aggregate([
{
$project: {
'tweets.id': 1,
'tweets.likedBy': 0,
"tweets.is_liked" : {
$in: [ "some-random-dude", '$tweets.likedBy' ]
}
}
}
]).toArray()

即使用户的 id 包含在 LikedBy 数组中,无论如何我仍然会得到 is_liked: false

你知道我可能做错了什么吗?

最佳答案

您需要$map由于 tweets 是一个数组,而 likedBy 是另一个内部数组,请尝试:

db.gamers.aggregate([
{
$project: {
tweets: {
$map: {
input: "$tweets",
as: "tweet",
in: {
id: "$$tweet.id",
is_liked: { $in: [ "some-random-dude", { $ifNull: [ "$$tweet.likedBy", [] ] } ] }
}
}
}
}
}
])

编辑:您可以使用 $ifNull以避免在 tweets

中没有 likedBy 时出现错误

关于node.js - MongoDB $project 和 $in 总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53933281/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com