蒙戈发现功能不匹配
问题描述:
蒙戈版本:3.2.8
蒙戈发现功能不匹配
我的样品JSON是如下
我的查询来获取name
等于apple
不起作用。
db.collection.find({ "products.foods.name": "apple" })
取而代之的是取所有的记录,奇怪吗?
$ eq,$ lt或$ gt都不起作用。他们的结果与整个数据。
db.aggregation.find({ "products.foods.min_price": {$eq:10} })
在此先感谢。
答
的解决方案是为n $unwind
两个阵列。
db.foods.aggregate([
{ $unwind : "$products" },
{ $unwind : "$products.foods" },
{ $match : { "products.foods.min_price": 10 }}
])
答
试试这个:
db.test.aggregate([
{$match: {'products.foods.name': 'apple'}}])
从Retrieve only the queried element in an object array in MongoDB collection
两者可以尝试从该职位其他例子。
答
尝试使用此:db.Exercise.aggregate([ {$match: {'products.foods.min_price': 10}}])
正如其他人已经告诉你的那样,匹配文档的一部分将返回完整的文档,除非您采取像使用聚合框架这样的特殊措施。但是,由于您似乎将食品条目视为单个记录,并希望它们能够单独从该查询中返回,我的猜测是您对mongo中的文档有一个相当根本的误解。您发布的JSON看起来像是一个文档来保存它的所有内容,大约等于将关系数据库中的所有数据都写入单行。考虑每个条目的食物和个人文档的单独收集。 – mtj