我的数据库结构在几个集合上都有一个OrderId字段,用于保存对订单的引用(我知道这种SQL-y类型)。此字段是一个字符串,而原始订单ID是一个ObjectId。
我有一个可在MongoDB v4中使用的聚合查询,我需要使其对v3.6数据库有效。
完整查询如下:
[
{
"$addFields": { "_OrderId": { "$toString": "$_id" }}
},
{
"$lookup": {
"from": "local-order-items",
"localField": "_OrderId",
"foreignField": "OrderId",
"as": "OrderItems"
}
},
{
"$match": {
"xxx": "yyy"
}
]
如您所见,查询使用$ toString将原始订单ID添加为字符串,并在查询的$ lookup阶段中使用它。
如何使用不支持$ toString的v3.6达到类似的结果?
答案 0 :(得分:0)
3.6不支持$toString()管道运算符。但是,支持相关的ObjectId.ToString()方法。
我无权访问3.6实例,但这可能有用:
{
$addFields: {
"_OrderIdAsString": "$_id".toString(),
}
}