我的mongo文件看起来像这样:
{
"_id" : ObjectId(abcd),
"ratingComment" : {
"_id" : NumberLong(1000),
"comment" : "Test comment"
}
}
我想将ratingComment字段转换为数组类型字段。所以我这样做了:
db.getCollection('ratingsAndReview').find({}).forEach(function(doc){doc.ratingComment=[doc.ratingComment];db.ratingsAndReview.save(doc);})
查询之后,我注意到某些文档仍然具有旧结构,并且
ratingComment
字段不是数组。因此,现在它们是上述结构和以下结构的混合:
{
"_id" : ObjectId(abcd),
"ratingComment" : [
{
"_id" : NumberLong(1000),
"comment" : "Test comment"
}
]
}
然后,我想检索所有具有
reviewComment:{$type:3}
的文档,但是此查询db.ratingsAndReview.find({ratingComment:{$type:3}})
返回两种类型的文档。问题是,将给我所有旧格式文件的查询是什么?
最佳答案
尝试使用dot notation进行查询,以从零开始的索引位置指定或访问数组的元素,如下所示:
db.ratingsAndReview.find({ "ratingComment.0": { "$exists": false } })
这将在集合中查询
ratingComment
字段不是数组的文档,这是因为它没有任何元素作为数组。