我正在挠头几个小时,无法弄清楚如何通过price.amount查询以下文件
{
"_id" : ObjectId("4f148bb56858c43428f0666b"),
"Date" : new Date("Sat, 13 Sep 2014 00:42:29 GMT +04:00"),
"Items" : [{
"ProductId" : ObjectId("4f14873f6858c42ce82968e6"),
"Quantity" : 5,
"Price" : {
"Amount" : "4929",
"Currency" : "USD"
}
}, }, {
"ProductId" : ObjectId("4f14873f6858c42ce829692b"),
"Quantity" : 10,
"Price" : {
"Amount" : "140",
"Currency" : "USD"
}
}],
"CustomerId" : ObjectId("4f1487f16858c419c04ec2e2")
}
我想选择所有具有最小1个Price项目的对象,其数量为>例如10。
由于
答案 0 :(得分:2)
> db.objects.find({'Items.Price.Amount':{$gt:"10"}}).pretty()
{
"_id" : ObjectId("4f148bb56858c43428f0666b"),
"Date" : ISODate("2014-09-12T20:42:29Z"),
"Items" : [
{
"ProductId" : ObjectId("4f14873f6858c42ce82968e6"),
"Quantity" : 5,
"Price" : {
"Amount" : "4929",
"Currency" : "USD"
}
},
{
"ProductId" : ObjectId("4f14873f6858c42ce829692b"),
"Quantity" : 10,
"Price" : {
"Amount" : "140",
"Currency" : "USD"
}
}
],
"CustomerId" : ObjectId("4f1487f16858c419c04ec2e2")
}
您的“金额”字段是字符串类型(我假设是错误的)。因此,您需要与我的示例查询中显示的字符串值进行比较。显然,如果你真的想要比较整数,这将产生相当不可预测的结果。如果是这样,请将查询中的“金额”字段和$ gt值转换为数字。
答案 1 :(得分:2)
.NET MongoDB驱动程序将Decimal类型序列化为String。这样,当从MongoDB读取Decimal时,它可以存储Decimal而不会丢失任何精度/数据。
选择其他数字类型可以解决您的问题。