将列表与集合中的mongodb字段进行比较

问题描述 投票:0回答:1

我有一个User集合,其文档结构类似,

{
    "_id": "ObjectId('5e8baxxxxxe400a')",
    "Email":"[email protected]",
    "Favourites": ["Red","Blue","Green","Orange","Black"]
},
{
    "_id": "ObjectId('5e8baxxxxxe4002')",
    "Email":"[email protected]",
    "Favourites": ["Purple","Pink","Magenta","White","Black"]
},
{
    "_id": "ObjectId('5e8baxxxxxe4002')",
    "Email":"[email protected]",
    "Favourites": ["Red","Yellow","Grey","White","Black"]
},
{
    "_id": "ObjectId('5e8baxxxxxe4002')",
    "Email":"[email protected]",
    "Favourites": ["Green", "White","Pink"]
},
{
    "_id": "ObjectId('5e8baxxxxxe4002')",
    "Email":"[email protected]",
    "Favourites": ["Green", "White","Black"]
},

我正在尝试以很短的等待时间获得其收藏夹中包含RedBlack的所有结果

我的输出应该像,

{
    "_id": "ObjectId('5e8baxxxxxe400a')",
    "Email":"[email protected]",
    "Favourites": ["Red","Blue","Green","Orange","Black"]
},
{
    "_id": "ObjectId('5e8baxxxxxe4002')",
    "Email":"[email protected]",
    "Favourites": ["Purple","Pink","Magenta","White","Black"]
},
{
    "_id": "ObjectId('5e8baxxxxxe4002')",
    "Email":"[email protected]",
    "Favourites": ["Red","Yellow","Grey","White","Black"]
},
{
    "_id": "ObjectId('5e8baxxxxxe4002')",
    "Email":"[email protected]",
    "Favourites": ["Green", "White","Black"]
},

我尝试使用查询,

favourite = ['Red','Black']
res = db.User.find({"Favourites" : {"$in": favourite}})

但是我得到0个结果。要获得所需输出的查询应该是什么?

python mongodb
1个回答
0
投票

您需要使用$all运算符

db.User.find({
  "Favourites": {
    "$all": [
      "Red",
      "Black"
    ]
  }
})

MongoPlayground

© www.soinside.com 2019 - 2024. All rights reserved.