Given Data:
Task : If woo_order_id is null or "" (empty string) then return Instock and if it is not null/empty string then return woo_order_data
[
{
"InStock": 1,
"woo_order_id": null,
"woo_order_data": "1d",
},
{
"InStock": 2,
"woo_order_id": 2,
"woo_order_data": "2d",
},
{
"InStock": 3,
"woo_order_id": 3,
"woo_order_data": "3d",
},
{
"InStock": 4,
"woo_order_id": "",
"woo_order_data": "4d",
}
]
Solution:
db.collection.aggregate([
{
$project: {
InStock: 1,
woo_order_id: 1,
woo_order_data: 1,
cova_items: {
$cond: {
if: {
"$or": [
{
"$eq": [
"$woo_order_id",
""
]
},
{
"$eq": [
"$woo_order_id",
null
]
}
]
},
then: "$InStock",
else: "$woo_order_data"
}
}
}
}
])
Output :
[
{
"InStock": 1,
"_id": ObjectId("5a934e000102030405000000"),
"cova_items": 1,
"woo_order_data": "1d",
"woo_order_id": null
},
{
"InStock": 2,
"_id": ObjectId("5a934e000102030405000001"),
"cova_items": "2d",
"woo_order_data": "2d",
"woo_order_id": 2
},
{
"InStock": 3,
"_id": ObjectId("5a934e000102030405000002"),
"cova_items": "3d",
"woo_order_data": "3d",
"woo_order_id": 3
},
{
"InStock": 4,
"_id": ObjectId("5a934e000102030405000003"),
"cova_items": 4,
"woo_order_data": "4d",
"woo_order_id": ""
}
]