$unset 规范必须是字符串或数组

ATT*_*ATT 6 mongodb aggregation-framework mongodb-compass

我有这种结构的文档:

{
   "_id":{
      "$oid":"..."
   },
   "Index":0,
   "KeyIndex":"...",
   "SerialNumber":"...",
   "Tests":[
      {
         "TestName":"...",
         "Status":"...",
         "Steps":[
            {
               "LowLimit":"X",
               "HighLimit":"Y",
               "Result":"Z"
            },
            {
               "LowLimit":"X",
               "HighLimit":"Y",
               "Result":"Z"
            }
         ],
         "Logs":[
            {
               "Type":"Info",
               "Message":"..."
            },
            {
               "Type":"Warning",
               "Message":"..."
            }
         ]
      },
      {
         "TestName":"...",
         "Status":"...",
         "Steps":[
            {
               "LowLimit":"X",
               "HighLimit":"Y",
               "Result":"Z"
            }
         ],
         "Logs":[
            {
               "Type":"Info",
               "Message":"..."
            },
            {
               "Type":"Info",
               "Message":"..."
            }
         ]
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,Tests属性是一个数组,其中每个对象都有自己的属性,其中两个是它们自身的数组。我想要一个从测试数组中的所有对象中删除日志属性的阶段。

结果应该是这样的:

{
   "_id":{
      "$oid":"..."
   },
   "Index":0,
   "KeyIndex":"...",
   "SerialNumber":"...",
   "Tests":[
      {
         "TestName":"...",
         "Status":"...",
         "Steps":[
            {
               "LowLimit":"X",
               "HighLimit":"Y",
               "Result":"Z"
            },
            {
               "LowLimit":"X",
               "HighLimit":"Y",
               "Result":"Z"
            }
         ]
      },
      {
         "TestName":"...",
         "Status":"...",
         "Steps":[
            {
               "LowLimit":"X",
               "HighLimit":"Y",
               "Result":"Z"
            }
         ]
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

我正在使用指南针来构建聚合,我选择 $unset 阶段并尝试:

/**
 * fields: The field name(s).
 */
{
  "$Tests.Logs"
}
Run Code Online (Sandbox Code Playgroud)

和:

/**
 * fields: The field name(s).
 */
{
  ["$Tests.Logs"]
}
Run Code Online (Sandbox Code Playgroud)

其中说:Stage must be a properly formatted document.

和:

/**
 * fields: The field name(s).
 */
{
  "$Tests.Logs":1
}
Run Code Online (Sandbox Code Playgroud)

其中说:$unset specification must be a string or an array .