MongoDB聚合将列表转换为布尔值
我需要在MongoDB中进行查询,根据列表中是否存在值,将列表转换为True或False 下面是该模式的摘要视图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
{'_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,但是你的答案很好,我可以理解。谢谢