【mongoDB】mongoDB 多级数据更新(2)

2023-05-25  本文已影响0人  Bogon

mongoDB如何查看表中的最近10条数据 ?

在MongoDB中,可以使用find()方法查询表中的数据,并使用sort()方法对数据进行排序,然后使用limit()方法限制查询结果的数量。

以下是查看表中最新10条数据的语句:

> use  testDB
> db.collection.find().sort({_id: -1}).limit(10)

其中,collection是指要查询的表的名称,_id: -1表示按照_id字段进行倒序排序,即最新的数据排在前面,limit(10)表示只查询前10条数据。

{
        "_id" : "3464f4f9-633d-4081-a7ce-e052eabd2aea",
        "useTimer" : false,
        "scheduleTime" : "2023-02-11 12:25",
        "model" : 2,
        "text" : "测试",
        "msgType" : 2,
        "sysncHeadLine" : false,
        "commentSwitch" : false,
        "commentauditswitch" : false,
        "list" : [
                {
                        "row" : 0,
                        "date" : "",
                        "title" : "测试",
                        "text" : "",
                        "zip" : "<p>测试</p>",
                        "url" : "",
                        "author" : "",
                        "publishTime" : "2023-02-11 12:15",
                        "commentSwitch" : false,
                        "commentauditswitch" : false,
                        "attaches" : [ ]
                }
        ],
        "updateTime" : NumberLong("1676089010840"),
        "createTime" : NumberLong("1676089010840"),
        "sendUser" : "63bd0b5ce4b0273b933b5490",
        "sendUserName" : "test",
        "pid" : "10010",
        "group" : "全部订阅用户",
        "eid" : "10086"
}

要将 "zip" : "<p>测试</p>" 改为 "zip" : "<p>test</p>" ,如何操作?

可以使用以下代码来更新该条数据中的 "zip" 字段:

db.collection.updateOne(
    { _id: "3464f4f9-633d-4081-a7ce-e052eabd2aea" },
    { $set: { "list.0.zip": "<p>test</p>" } }
)

其中,db.collection 是你的集合名称。
这个命令使用了 updateOne() 方法来更新指定 _id 的文档,使用 $set 操作符将 "zip" 字段更新为 "<p>test</p>"。
注意,这个命令中的 "list.0" 表示更新该文档中的 list 数组的第一个元素。
如果你的文档中有多个元素,你需要根据实际情况修改这个路径。

要将 "zip" : "<p>测试</p>" 删除 ,如何操作?

要删除 "zip" 字段,可以使用 $unset 操作符来删除该字段。以下是更新语句:

db.collection.updateOne(
    { _id: "3464f4f9-633d-4081-a7ce-e052eabd2aea" },
    { $unset: { "list.0.zip": "" } }
)

该命令将 "zip" 字段的值设为空字符串,从而将其删除。
注意,这个命令中的 "list.0" 表示更新该文档中的 list 数组的第一个元素。
如果你的文档中有多个元素,你需要根据实际情况修改这个路径。

如果要在 "zip" : "<p>测试</p>" 下 加一行 "测试key": "测试value" ,如何操作?

可以使用 updateOne() 方法来更新该条数据,具体操作如下:

db.collection.updateOne(
   {_id: "3464f4f9-633d-4081-a7ce-e052eabd2aea"},
   {$set: {"list.0.测试key": "测试value"}}
) 

其中,第一个参数指定了要更新的数据的条件,第二个参数使用 $set 操作符来指定要更新的字段和值。
在这里使用了数组索引来指定要更新的子文档中的字段。

{
        "_id" : "3464f4f9-633d-4081-a7ce-e052eabd2aea",
        "useTimer" : false,
        "scheduleTime" : "2023-02-11 12:25",
        "model" : 2,
        "text" : "测试",
        "msgType" : 2,
        "sysncHeadLine" : false,
        "commentSwitch" : false,
        "commentauditswitch" : false,
        "list" : [
                {
                        "测试key": "测试value",             
                        "row" : 0,
                        "date" : "",
                        "title" : "测试",
                        "text" : "",
                        "zip" : "<p>测试</p>",
                        "url" : "",
                        "author" : "",
                        "publishTime" : "2023-02-11 12:15",
                        "commentSwitch" : false,
                        "commentauditswitch" : false,
                        "attaches" : [ ]
                }
        ],
        "updateTime" : NumberLong("1676089010840"),
        "createTime" : NumberLong("1676089010840"),
        "sendUser" : "63bd0b5ce4b0273b933b5490",
        "sendUserName" : "test",
        "pid" : "10010",
        "group" : "全部订阅用户",
        "eid" : "10086"
}

字典中, {key1 : value1, key2 : value2 } , "测试key": "测试value" 在字典中的 位置,没有关系。

上一篇 下一篇

猜你喜欢

热点阅读