rethinkdb更新嵌套数组
rethinkdb update nested array
我有以下结构:
{
"id": "3065e957-56e9-4084-8e32-bb4de8d9265a",
"id_service": "570b4abe-70fe-44e0-845e-74eb60081fc4",
"tweets": [
{
"created_at": "2013-10-13 00:58:11",
"id_tweet": "389193311908413440",
"id_user": 12375562,
"name": "elgabo1",
"photo": "https://pbs.twimg.com/profile_images/1827710728/45d1be6d2e0f1c710814e098d6f56c12_normal.png",
"screen_name": "elgabo1",
"status_tweet": 0,
"text": "@profeco Deurope Gran Sur tapa los sellos de suspensión con propaganda"
},
{
"created_at": "2013-10-02 06:50:01",
"id_tweet": "385295588377387008",
"id_user": 12375562,
"name": "elgabo1",
"photo": "https://pbs.twimg.com/profile_images/1827710728/45d1be6d2e0f1c710814e098d6f56c12_normal.png",
"screen_name": "elgabo1",
"status_tweet": 1,
"text": "@caspoliciadf Delegacion coyoacan"
}
]
}
我想从 id_tweet:"389193311908413440"
设置 status_tweet:1
我可以通过 id_tweet:"389193311908413440"
获取数组的元素
r.db('twitter_settings').table('tweets_service').filter({id:'3065e957-56e9-4084-8e32-bb4de8d9265a'})
.map(function(d){
return {
"tweets": d("tweets").filter({'id_tweet':'665305939294056448'})
}
}
)
但是当我尝试更新字段时出现错误:
r.db('twitter_settings').table('tweets_service').filter({id:'3065e957-56e9-4084-8e32-bb4de8d9265a'})
.map(function(d){
return {
"tweets": d("tweets").filter({'id_tweet':'665305939294056448'})
}
}
)
.update({"status_tweet": 1})
e: Expected type SELECTION but found SEQUENCE:
VALUE SEQUENCE in:
r.db("twitter_settings").table("tweets_service").filter({id: "3065e957-56e9-4084-8e32-bb4de8d9265a"}).map(function(var_341) { return {tweets: var_341("tweets").filter({id_tweet: "665305939294056448"})}; }).update({status_tweet: 1})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
提前致谢
使用map
后我们不能update/delete。
所以在更新函数中将函数更改为 运行 map
。这样的东西会起作用。
r.db('twitter_settings').table('tweets_service')
.filter({id:'3065e957-56e9-4084-8e32-bb4de8d9265a'})
.update(function(doc) {
return {
tweets: doc('tweets').map(function(tweet) {
return r.branch(
tweet('id_tweet').eq('389193311908413440'),
tweet.merge({status_tweet:1}),
tweet)
})
}
})
我有以下结构:
{ "id": "3065e957-56e9-4084-8e32-bb4de8d9265a", "id_service": "570b4abe-70fe-44e0-845e-74eb60081fc4", "tweets": [ { "created_at": "2013-10-13 00:58:11", "id_tweet": "389193311908413440", "id_user": 12375562, "name": "elgabo1", "photo": "https://pbs.twimg.com/profile_images/1827710728/45d1be6d2e0f1c710814e098d6f56c12_normal.png", "screen_name": "elgabo1", "status_tweet": 0, "text": "@profeco Deurope Gran Sur tapa los sellos de suspensión con propaganda" }, { "created_at": "2013-10-02 06:50:01", "id_tweet": "385295588377387008", "id_user": 12375562, "name": "elgabo1", "photo": "https://pbs.twimg.com/profile_images/1827710728/45d1be6d2e0f1c710814e098d6f56c12_normal.png", "screen_name": "elgabo1", "status_tweet": 1, "text": "@caspoliciadf Delegacion coyoacan" } ] }
我想从 id_tweet:"389193311908413440"
设置 status_tweet:1我可以通过 id_tweet:"389193311908413440"
获取数组的元素r.db('twitter_settings').table('tweets_service').filter({id:'3065e957-56e9-4084-8e32-bb4de8d9265a'}) .map(function(d){ return { "tweets": d("tweets").filter({'id_tweet':'665305939294056448'}) } } )
但是当我尝试更新字段时出现错误:
r.db('twitter_settings').table('tweets_service').filter({id:'3065e957-56e9-4084-8e32-bb4de8d9265a'}) .map(function(d){ return { "tweets": d("tweets").filter({'id_tweet':'665305939294056448'}) } } ) .update({"status_tweet": 1}) e: Expected type SELECTION but found SEQUENCE: VALUE SEQUENCE in: r.db("twitter_settings").table("tweets_service").filter({id: "3065e957-56e9-4084-8e32-bb4de8d9265a"}).map(function(var_341) { return {tweets: var_341("tweets").filter({id_tweet: "665305939294056448"})}; }).update({status_tweet: 1}) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
提前致谢
使用map
后我们不能update/delete。
所以在更新函数中将函数更改为 运行 map
。这样的东西会起作用。
r.db('twitter_settings').table('tweets_service')
.filter({id:'3065e957-56e9-4084-8e32-bb4de8d9265a'})
.update(function(doc) {
return {
tweets: doc('tweets').map(function(tweet) {
return r.branch(
tweet('id_tweet').eq('389193311908413440'),
tweet.merge({status_tweet:1}),
tweet)
})
}
})