0

我正在尝试更新数组中的数组中的一些字段

一个示例文档是这样的:

{
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
    }
],

}

我想将 urls 数组更新为:

        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)

但是它给了我错误

can't append to array using string field name [urls]

有什么建议么?

4

1 回答 1

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"
}));

希望能帮助到你!

于 2013-08-30T22:20:32.173 回答