Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python MongoDB文档中的筛选器数组_Python_Mongodb_Pymongo - Fatal编程技术网

Python MongoDB文档中的筛选器数组

Python MongoDB文档中的筛选器数组,python,mongodb,pymongo,Python,Mongodb,Pymongo,我正在尝试创建基于非twitter用户提及的网络地图。我将数据存储在MongoDB中,不知道如何删除不需要的用户 数据库文档示例: { 'user': 'user1' 'mentioned_users: ['user2', 'user3'] } { 'user': 'user2' 'mentioned_users: ['user1', 'user3'] } 所需输出示例: { 'user': 'user1' 'mentioned_users': ['user2'] }

我正在尝试创建基于非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解决方案?

您可以在MongoDB查询中使用GN
聚合实现这一点。我可以试试这个

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"]
}