gpt4 book ai didi

mongodb - 检索mongoDB中数组中的所有元素

转载 作者:可可西里 更新时间:2023-11-01 09:58:01 25 4
gpt4 key购买 nike

如何将数组分配给变量。我能够返回我想要的文档,但无法专门获取特定字段中数组中的所有元素。此字段称为“喜欢”。

我过滤我想要的文档的查询:

Posts.find({}, {owner: Meteor.user()})

我想从 Posts 集合中检索名为“likes”的数组字段中的所有元素。 (“喜欢”字段中的每个元素都是一个对象 ID)

我尝试了各种运算符,例如“喜欢”字段的 $all 和 $in,并在 console.log 中进行了测试,但我无法获取 ID。根据 mongo 文档,我需要在运算符中指定一个元素,但我不想那样。我只是想要里面的任何东西。

var likers = Posts.find({}, {owner: Meteor.user()}, {likes: {$in: [] }})

基本上,我试图从“喜欢”字段中检索所有元素,以便我可以进行另一个查询以返回结果。

我正在运行 meteor 0.9+

最佳答案

试一试:

var myPosts = Posts.find(
{owner: Meteor.user()},
{fields: {likes: 1}}
).fetch()

var myLikes = _.chain(myPosts)
.pluck('likes')
.flatten()
.uniq()
.value();

首先,我们获取当前用户是所有者的所有帖子。每个帖子都将包含一个 _id 和一个 likes 数组。接下来我们通过以下方式提取所有的赞:

  1. 从每个文档中提取每个likes。这为我们提供了一组数组。
  2. 将数组的数组扁平化为单个点赞数组。
  3. 运行 uniq 这样我们就只有独特的点赞数(不是必需的,但可以作为一种优化)。

然后您可以在后续查询中使用 myLikes。例如:

Likes.find({_id: {$in: myLikes}})

以下是一些测试数据,以防 myPosts 为空:

var myPosts = [
{_id: 1, likes: [1, 2, 3]},
{_id: 2, likes: [2, 3, 4]},
{_id: 3, likes: [4, 5, 6]}
];

在这种情况下,myLikes 将是:[ 1, 2, 3, 4, 5, 6 ]

关于mongodb - 检索mongoDB中数组中的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26281323/

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