$ type for Array字段返回false

时间:2013-08-30 04:52:46

标签: mongodb mongo-java mongojs

I have a collection having following data:

{"_id" : ObjectId("5220222f8188d30ce85d61cc"),

“testfields”:[{               “test_id”:1,               “test_name”:“xxxx”           }]     }

when I query :
db.testarray.find({ "testfields" : { "$type" : 4 } })

it returns no data,but same returns data when I do:
db.testarray.find({ "$where" : "Array.isArray(this.testfields)" })

It returns data, do the type:4 identifies some other kind of list?

1 个答案:

答案 0 :(得分:1)

由于testfieldsArray$type : 4会针对testfields中的每个元素执行“is array”检查,而不是testfields本身。由于您的testfields只包含一个Object,因此不会返回。

另一方面,如果您将以下内容插入到收藏中,

db.testarray.insert( { "testfields" : [ { "test_id" : 1, "test_name" : "xxxx" }, 
                                        [ "a", "b" ] ] } );

它会被返回,因为现在testfields的一个元素是Array

更多信息在docs中解释。