MongoDB文档中的过滤器数组

威廉·斯特朗

我正在尝试创建基于关闭Twitter用户提及的网络地图。我将数据存储在MongoDB中,无法弄清楚如何删除不需要的用户。

示例数据库文件:

{
  'user': 'user1'
  'mentioned_users: ['user2', 'user3']
}
{
  'user': 'user2'
  'mentioned_users: ['user1', 'user3']
}

所需输出示例:

{
  'user': 'user1'
  'mentioned_users': ['user2']
}
{
  'user': 'user2'
  'mentioned_users': ['user1']
}

user3在提到的用户的user1和user2列表中都存在,但是user3是多余的,因为user3在集合中没有自己的文档。

我需要使用db.collection.find()或其他方法的过滤器,以便摆脱所有无关的用户。

有没有一种简单的方法可以使用pymongo做到这一点,还是应该创建一个python解决方案?

谢沙布·罗伊(Shaishab Roy)

您可以在MongoDB中查询usign来实现aggregate可以试试这个

db.users.aggregate([
  {$unwind: "$mentioned_users"},
  {$lookup: {from: "users", localField: "mentioned_users", foreignField: "user", as: "validUser"}},
  {$match: {"validUser.user": {$exists: true}}},
  {
    $group: {
      _id: "$_id",
      user: {$first: "$user"},
      mentioned_users: {$push: "$mentioned_users"}
    }
  }
])

然后输出将像

{
  "_id" : ObjectId("5a13bc87400096bfa0b34228"),
  "user" : "user1",
  "mentioned_users" : ["user2"]
}
{
  "_id" : ObjectId("5a13bc87400096bfa0b34229"),
  "user" : "user2",
  "mentioned_users" : ["user1"]
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章