2013-08-30 74 views
0

我试图阵列内更新阵列内的几个字段更新MongoDB中嵌套阵列几个字段(pymongo)

一个实例文件是这样的:

{ 
id: 987654321 
tweets: [ 
    { 
     text: "RT @947FreshFM: A vigil will be held for #SandyHook victims at UMd. at 7pm at Nyumburu Ampitheater. @BlackTerp", 
     urls: [ 

     ], 
     id: 279718351289348100 
    }, 
    { 
     text: "RT @WTOP: McDonnell: If you talk completely about guns, I think you're missing the point. #AskTheGov http://t.co/hbFt7t1n", 
     urls: [ 
      { 
       status: null, 
       domain: null, 
       url: "http://t.co/hbFt7t1n", 
       period: null, 
       resolved_url: null, 
       annotation: null 
      } 
     ], 
     id: 281061376275906560 
    } 
], 

}

我想更新的URL数组:

 urls: [ 
      { 
       status: null, 
       domain: "wtop.com", 
       url: "http://t.co/hbFt7t1n", 
       period: null, 
       resolved_url: "http://wtop.com/?nid=610&sid=3162096", 
       annotation: null, 
       annotation2: "guncontrol" 
      } 
     ], 

我使用的是这样做的更新:

collection.update({"id":987654321, "tweets.id":281061376275906560,"tweets.urls.url":"http://t.co/hbFt7t1n"}, 
{"$set":{ 
    "tweets.urls.resolved_url":"http://wtop.com/?nid=610&sid=3162096", 
    "tweets.urls.domain": "wtop.com", 
    "tweets.urls.annotation2":"guncontrol" 
}}, False,False) 

但是它给了我错误

​​

有什么建议?

回答

0

我不能确定,但​​这可能是怎么回事。从您的示例文件,你的模型具有此架构:

{ 
    id: Number, 
    tweets: Array 
} 

当您在

collection.update({ 
    "id": 987654321, 
    "tweets.id": 281061376275906560, 
    "tweets.urls.url": "http://t.co/hbFt7t1n" 
}, ...)` 

搜索模式的实例这可能是因为它没有发现该模型的情况下,你正在寻找对于。

我会尝试运行此脚本,看看您的搜索条件是有效的:

console.log(collection.find({ 
    "id": 987654321, 
    "tweets.id": 281061376275906560, 
    "tweets.urls.url": "http://t.co/hbFt7t1n" 
})); 

希望它能帮助!