Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
MongoDB聚合将列表转换为布尔值_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

MongoDB聚合将列表转换为布尔值

MongoDB聚合将列表转换为布尔值,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我需要在MongoDB中进行查询,根据列表中是否存在值,将列表转换为True或False 下面是该模式的摘要视图 {'_id': ObjectId('604edf91571e7ab19cc2c238'), 'timestamp': 1616164767.773929, 'name': 'some name', 'metric1': 1, 'metric2': 2, 'metric3': 3, 'tags': ['tag1', 'tag2', 'tag3', 'tag that mat

我需要在MongoDB中进行查询,根据列表中是否存在值,将列表转换为True或False

下面是该模式的摘要视图

{'_id': ObjectId('604edf91571e7ab19cc2c238'),
 'timestamp': 1616164767.773929,
 'name': 'some name',
 'metric1': 1,
 'metric2': 2,
 'metric3': 3,
 'tags': ['tag1', 'tag2', 'tag3', 'tag that matters']}

如果列表中有一个
“重要的标记”
,是否有办法将标记键更改为True或False值?我不想排除没有标记的记录,我只希望这些记录的标记键的值为False。

需要在项目阶段使用
$in
操作符

{
    "$project": {
        "_id": "$_id",
        "timestamp": "$timestamp",
        "name": "$name",
        "metric1": "$metric1",
        "metric2": "$metric2",
        "metric3": "$metric3",
        "tags": {
            "$in": ["tag that matters", "$tags"]
        }
    }
}
请尝试以下查询:

db.collectionName.aggregate([
{
“$addFields”:{
“标签”:{
$map:{
输入:“$tags”,
如:“标签”,
在:{
$eq:['$$tag','tag that mattern']
}
}
}
}
}
]);
输出:

{
“_id”:ObjectId(“604edf91571e7ab19cc2c238”),
“时间戳”:1616164767.773929,
“名字”:“某个名字”,
“metric1”:1,
“metric2”:2,
“metric3”:3,
“标签”:[
假,,
假,,
假,,
真的
]
}

与$set stage一起使用。@D.SM有效。谢谢。您是否希望看到Python中的
True
False
数组?因为在javascript中它的
true
false
。然后我需要修改查询lil位。@DheemanthBhat是的,我应该在标记中包含Python,但是你的答案很好,我可以理解。谢谢