我有一个具有以下结构的文档
{testfields:[{"test_id":1,"test_name":"xxxx"}]},
但是,我的应用程序不知道“testfield”是数组还是普通对象,现在如果我在聚合查询中应用“$unwind”并且提交的不是数组类型“mongodb”抛出错误,那无法展开。我想知道他们的一种方法是我可以检查该字段是否为数组类型而不是应用展开,否则将其视为普通对象。
我有一个具有以下结构的文档
{testfields:[{"test_id":1,"test_name":"xxxx"}]},
但是,我的应用程序不知道“testfield”是数组还是普通对象,现在如果我在聚合查询中应用“$unwind”并且提交的不是数组类型“mongodb”抛出错误,那无法展开。我想知道他们的一种方法是我可以检查该字段是否为数组类型而不是应用展开,否则将其视为普通对象。
我认为这可以帮助你。
在使用之前unwind
,尝试使用 amatch
来过滤文档,其中testfields
字段是一个数组:
$match: { $where : "Array.isArray(this.testfields)" }
然后,您可以毫无错误地使用unwind
。