【发布时间】:2016-12-29 00:22:07
【问题描述】:
我已经为此工作了大约一个星期,学到了很多关于 pymongo 的知识但仍然无法破解它。
我在 mongo 中有以下 JSON
{
"_id" : ObjectId("5845e25xxxxxxxxxx"),
"timestamp" : ISODate("2016-08-24T14:59:04.000+0000"),
"new_key" : "cambiar",
"Records" : [
{
"RecordType" : "WFD",
"Properties" : [
{
"Property" : {
"IsReadOnly" : "False",
"ValueType" : "System",
"Name" : "LastWrite"
},
"value" : "42"
},
{
"Property" : {
"IsReadOnly" : "True",
"ValueType" : "String",
"Name" : "Time_as_String"
},
"value" : "24-08-2016 14:59:08"
},
{
"Property" : {
"IsReadOnly" : "False",
"ValueType" : "32",
"Name" : "YES"
},
"value" : "1472065148"
下面还有更多属性。我试图只返回“值”:1472065148,仅此而已。我已经写了这个查询
x = dataset.find_one({"Records.Properties.Property.Name":'YES'},{"Records.Properties.Property.value":1})
但是因为“价值”与所有其他价值处于同一水平,所以我得到了所有价值结果,而不仅仅是我希望的结果。
有没有办法在匹配查询的object之后只打印结果object???? “名称”:“是”是我要查询的对象,“值”:“1472065148”是我要打印的对象。
------------ 附加部分---------------
上面是一个文档,其中包含我想要检索的 'name' : 'Yes' 值。但是,每个文档内部都有相同的“名称:是”。我想做的是首先根据不同的“名称”选择文档:“xxxx”的值。例如上面 - 查找 'name' : 'lastwrite' 在检索 'name' : 'YES' 值之前检查其值是否为 42(因此选择此文档而不是其他文档)(如您给我的答案) .
(如果这算作一个新问题,请告诉我,我将删除它并发布一个新问题)
【问题讨论】:
标签: mongodb mongodb-query pymongo