MongoDB。文档的其中一个字段可以是一个数组,包括一个空数组,一个子文档,可以为空或不为空,或者为空,或者根本不存在。我需要一个 find() 的条件来匹配一个非空的子文档,而且仅此而已。
所以:
fieldName: {} - no match.
fieldName: [ { id:0 } ] - no match.
fieldName: [ {} ] - no match.
No field called fieldName - no match.
fieldName: null - no match.
fieldName: { id: 0 } - match.
我无权修改任何内容,我必须按原样使用数据库。如何制定 find() ?
最佳答案
使用以下查询:
db.test.find({
"fieldName": { "$gt": {} },
"fieldName.0": { "$exists": false }
})
例如,对于上面的测试用例,插入以下文档:
db.test.insert([
{ _id: 1, fieldName: {} },
{ _id: 2, fieldName: [ { id: 0 } ] },
{ _id: 3, fieldName: [ {} ] },
{ _id: 4 },
{ _id: 5, fieldName: null},
{ _id: 6, fieldName: { id: 0 } }
])
上面的查询将返回带有_id: 6
的文档
/* 0 */
{
"_id" : 6,
"fieldName" : {
"id" : 0
}
}
关于mongodb - 如何检查MongoDB中的字段是[]还是{}?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30617391/