2016-03-28 78 views
0

我已填充了一些记录在我的MogoDB作为下如何编写下面的mongo查询?

db.products.insert({ "_id" : { "oid" : "507d95d5719dbef170f15bfe" }, "name" : "Phone Service Basic Plan", "type" : "service", "monthly_price" : 40, "limits" : { "voice" : { "units" : "minutes", "n" : 400, "over_rate" : 0.05 }, "data" : { "units" : "gigabytes", "n" : 20, "over_rate" : 1 }, "sms" : { "units" : "texts sent", "n" : 100, "over_rate" : 0.001 } }, "term_years" : 2 }) 

db.products.insert({ "_id" : { "oid" : "507d95d5719dbef170f15bff" }, "name" : "Phone Service Core Plan", "type" : "service", "monthly_price" : 60, "limits" : { "voice" : { "units" : "minutes", "n" : 1000, "over_rate" : 0.05 }, "data" : { "n" : "unlimited", "over_rate" : 0 }, "sms" : { "n" : "unlimited", "over_rate" : 0 } }, "term_years" : 1 }) 

db.products.insert({ "_id" : { "oid" : "507d95d5719dbef170f15c00" }, "name" : "Phone Service Family Plan", "type" : "service", "monthly_price" : 90, "limits" : { "voice" : { "units" : "minutes", "n" : 1200, "over_rate" : 0.05 }, "data" : { "n" : "unlimited", "over_rate" : 0 }, "sms" : { "n" : "unlimited", "over_rate" : 0 } }, "sales_tax" : true, "term_years" : 2 }) 

db.products.insert({ "_id" : { "oid" : "507d95d5719dbef170f15c01" }, "name" : "Cable TV Basic Service Package", "type" : "tv", "monthly_price" : 50, "term_years" : 2, "cancel_penalty" : 25, "sales_tax" : true, "additional_tarriffs" : [ { "kind" : "federal tarriff", "amount" : { "percent_of_service" : 0.06 } }, { "kind" : "misc tarriff", "amount" : 2.25 } ] }) 

现在,如果我需要找到,许多产品类型是如何电视我执行

db.products.find({ type : "tv" }).count() 

返回1(正确)。

同样,如果我需要查找**有多少产品有语音限制**将查询什么?

我试着用db.products.find({ limits : "voice" }).count()

但它返回0,而应该是3

请帮

回答

1

您需要使用exists条款

db.products.find({ "limits.voice" : { $exists : true, $ne : null } }) 
+0

感谢行之有效 –

+0

高兴它帮助。请接受 – Rahul