- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 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 }})
返回两种类型的文档。
问题是,为我提供所有旧格式文档的查询是什么?
最佳答案
根据$type的文档
Arrays
When applied to arrays, $type matches any inner element that is of the specified type. Without projection this means that the entire array will match if any element has the right type. With projection, the results will include just those elements of the requested type.
所以基本上它不检查数组字段的类型,它检查数组字段内值的类型,并且由于数组内部存在对象,它也返回包含数组字段的文档。
你可以尝试类似的事情
db.ratingsAndReview.find({ratingComment:{$not:{$type:4}}})
或者如 $type 文档示例中所示
db.ratingsAndReview.find( { $where : "!Array.isArray(this.ratingComment)" } );
关于java - 蒙戈 : $type is not working in mongo find query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42003863/
我是一名优秀的程序员,十分优秀!