db.collection.distinct()的返回值

时间:2015-10-15 01:34:09

标签: python mongodb

我有一个已插入MongoDB的集合。我想使用db.coll.distinct(key)检索一个特定值,并将其用作更新函数的值。示例Python代码如下:

post = {key:value}
db.filesystem3.insert(post)
value1 = "testing"
ret = db.filesystem3.distinct(key)
db.filesystem3.update({key:ret},{"$set":{key:value1}})
result = db.filesystem3.find()
for i in result:
    print i

该文档未获得更新。我在这里遗漏了什么,或者我们不能使用distinct字段进行更新?

2 个答案:

答案 0 :(得分:0)

对distinct的调用返回一个列表,因此您需要迭代返回的每个值。

.filter('convertDateTime', function($filter) {

    return function(input) {

        var timeFormat = 'dd MMM yyyy HH:mm'; //date format 

        if(input == null) { return "";}

        return $filter('date')(parseInt(input.substr(6)), timeFormat);

    };

})

答案 1 :(得分:0)

ret = db.filesystem3.distinct(key)行将返回一个数组,因此无法直接传递数组来更新文档

  

不同运营商的行为

     

Distinct Operator在单个集合中查找指定字段的不同值,在数组中返回结果

     

数组字段如果指定字段的值是数组,   db.collection.distinct()将数组的每个元素视为a   单独的价值。   http://docs.mongodb.org/manual/reference/method/db.collection.distinct/

您可以像这样更新代码

for(var i=0;i<ret.length;i++){
var val = ret[i];
db.filesystem3.update({key:val},{"$set":{key:value1}});
}

希望它会有所帮助