Navicat中mongo按照条件简单查询修改排序

用Navicat Premium 连接mongo后,想要做简单的查询和排序,数据集合名称叫trade,结构 ,

文档结构如下:

{
    "_id": "O201908221531130339",
    "_class": "com.wanmi.sbc.order.trade.model.root.Trade",
    "buyer": {
        "_id": "8a9bc76c617564e5016179d8545b0005",
        "name": "测试",
        "account": "139****2650",
        "levelId": NumberLong("211"),
        "levelName": "LV3",
        "customerFlag": true,
        "phone": "13952012650",
        "employeeId": "8a9bc76c63ec90520164263daeba0039"
    },
    "supplier": {
        "supplierCode": "S00001",
        "supplierName": "上海能科技有限公司",
        "supplierId": NumberLong("3"),
        "storeId": NumberLong("123456857"),
        "freightTemplateType": "NO",
        "storeName": "马小修",
        "isSelf": true
    },
    "buyerRemark": "",
    "encloses": "",
    "requestIp": "172.19.6.72",
    "invoice": {
        "type": NumberInt("-1"),
        "generalInvoice": { },
        "specialInvoice": {
            "_id": null
        },
        "addressId": "8a9bc76c617564e5016179d9bb430007",
        "sperator": false,
        "address": "北京市东城区23213123",
        "projectId": "",
        "projectName": "",
        "taxNo": ""
    },
    "tradeState": {
        "auditState": "CHECKED",
        "flowState": "VOID",
        "payState": "NOT_PAID",
        "deliverStatus": "NOT_YET_SHIPPED",
        "createTime": ISODate("2019-08-22T07:31:14.114Z"),
        "endTime": ISODate("2019-10-09T03:45:04.643Z"),
        "obsoleteReason": "订单超时未支付,系统自动取消"
    },
    "consignee": {
        "_id": "8a9bc76c617564e5016179d9bb430007",
        "provinceId": NumberLong("110000"),
        "cityId": NumberLong("110100"),
        "areaId": NumberLong("110101"),
        "address": "23213123",
        "detailAddress": "北京市东城区23213123",
        "name": "123123",
        "phone": "13132131232"
    },
    "tradePrice": {
        "goodsPrice": "1.70",
        "deliveryPrice": "0.00",
        "discountsPrice": "0",
        "special": false,
        "enableDeliveryPrice": false,
        "originPrice": "1.70",
        "totalPrice": "1.70",
        "discountsPriceDetails": [ ],
        "couponPrice": "0",
        "smallShopCouponPrice": "0"
    },
    "tradeItems": [
        {
            "oid": "OD201908221531138932",
            "adminId": "1",
            "storeId": NumberLong("123456857"),
            "spuId": "8a9bc76c616e5d1101616fe4b66b00c3",
            "spuName": "厂家批发一级小麦米散装小麦五谷杂粮现磨豆浆原料小麦仁批发",
            "skuId": "8a9bc76c616e5d1101616fe4b67000c4",
            "skuName": "厂家批发一级小麦米散装小麦五谷杂粮现磨豆浆原料小麦仁批发",
            "skuNo": "8000633464",
            "goodsWeight": "0.001",
            "goodsCubage": "0.000001",
            "freightTempId": NumberLong("61"),
            "cateId": NumberLong("580"),
            "cateName": "大米",
            "pic": "https://wanmi-b2b.oss-cn-shanghai.aliyuncs.com/201802071849420703",
            "num": NumberLong("1"),
            "deliveredNum": NumberLong("0"),
            "deliverStatus": "NOT_YET_SHIPPED",
            "unit": "kg",
            "price": "1.70",
            "originalPrice": "2.00",
            "levelPrice": "1.70",
            "splitPrice": "1.70",
            "specDetails": "散装每编织袋约50kg",
            "cateRate": "6.00",
            "distributionGoodsAudit": "COMMON_GOODS",
            "distributionCommission": "0.10",
            "commissionRate": "0.05",
            "marketingIds": [ ],
            "couponSettlements": [ ],
            "smallShopCouponSettlement": [ ],
            "goodsEvaluateStatus": "NO_EVALUATE",
            "isHaveCouponCode": false
        },
        {
            "oid": "OD201908221531138932",
            "adminId": "1",
            "storeId": NumberLong("123456857"),
            "spuId": "8a9bc76c616e5d1101616fe4b66b00c3",
            "spuName": "厂家批发一级小麦米散装小麦五谷杂粮现磨豆浆原料小麦仁批发",
            "skuId": "8a9bc76c616e5d1101616fe4b67000c4",
            "skuName": "厂家批发一级小麦米散装小麦五谷杂粮现磨豆浆原料小麦仁批发",
            "skuNo": "8000633464",
            "goodsWeight": "0.001",
            "goodsCubage": "0.000001",
            "freightTempId": NumberLong("61"),
            "cateId": NumberLong("580"),
            "cateName": "大米",
            "pic": "https://wanmi-b2b.oss-cn-shanghai.aliyuncs.com/201802071849420703",
            "num": NumberLong("1"),
            "deliveredNum": NumberLong("0"),
            "deliverStatus": "NOT_YET_SHIPPED",
            "unit": "kg",
            "price": "1.70",
            "originalPrice": "2.00",
            "levelPrice": "1.70",
            "splitPrice": "1.70",
            "specDetails": "散装每编织袋约50kg",
            "cateRate": "6.00",
            "distributionGoodsAudit": "COMMON_GOODS",
            "distributionCommission": "0.10",
            "commissionRate": "0.05",
            "marketingIds": [ ],
            "couponSettlements": [ ],
            "smallShopCouponSettlement": [ ],
            "goodsEvaluateStatus": "NO_EVALUATE",
            "isHaveCouponCode": false
        }
    ],
    "tradeDelivers": [ ],
    "deliverWay": "EXPRESS",
    "payInfo": {
        "payTypeId": "0",
        "payTypeName": "ONLINE",
        "desc": "在线支付",
        "isMergePay": false
    },
    "payOrderId": "ff8080816bf8e43b016cb83c966c0000",
    "platform": "CUSTOMER",
    "isAuditOpen": false,
    "paymentOrder": "PAY_FIRST",
    "orderTimeOut": ISODate("2019-08-22T08:31:14.189Z"),
    "tradeEventLogs": [
        {
            "operator": {
                "platform": "PLATFORM",
                "name": "system",
                "ip": "127.0.0.1",
                "account": "system"
            },
            "eventType": "已作废",
            "eventDetail": "[system]作废了订单O201908221531130339",
            "eventTime": ISODate("2019-10-09T03:45:04.644Z")
        },
        {
            "operator": {
                "platform": "CUSTOMER",
                "name": "测试",
                "adminId": "",
                "userId": "8a9bc76c617564e5016179d8545b0005",
                "ip": "172.19.6.72",
                "account": "13952012650"
            },
            "eventType": "创建订单",
            "eventDetail": "创建订单",
            "eventTime": ISODate("2019-08-22T07:31:14.382Z")
        }
    ],
    "channelType": "MALL",
    "shopName": "店铺",
    "storeBagsFlag": "NO",
    "distributeItems": [ ],
    "commission": "0",
    "totalCommission": "0",
    "commissions": [ ],
    "commissionFlag": false,
    "returnOrderNum": NumberInt("0"),
    "canReturnFlag": false,
    "canBilling": false,
    "tradeMarketings": [ ],
    "gifts": [ ],
    "orderSource": "APP",
    "orderEvaluateStatus": "NO_EVALUATE",
    "storeEvaluate": "NO_EVALUATE",
    "grouponFlag": false,
    "orderMedicineType": "NON_MEDICINE"
}

点击新建查询,输入语句。

1.查询订单是O201908221531130339的订单

db.getCollection("trade").find({"_id":"O201908221531130339"});

2.查询订单状态为COMPLETED的订单

db.getCollection("trade").find({"tradeState.flowState":"COMPLETED"});

3.按照订单创建时间排序-1,降序,1升序

db.getCollection("trade").find({}).sort({"tradeState.createTime":1})

4.订单号in查询

db.getCollection("trade").find({"_id":{
  $in: [
'O202101031113423152644',
'O202101031114155541106',
'O202101031114580551921',
'O202101031115150288368',
'O202101031118158289643',
'O202101031118299869986',
'O202101031120117733496',
'O202101031120509988512',
'O202101031121071803228',
'O202101031145345242422',
'O202101031145583010515',
'O202101031146234638161'
]}
});

5订单批量更新某字段

db.trade.update({

    '_id': {

        $in: [

'O202101031113423152644',
'O202101031114155541106',
'O202101031114580551921',
'O202101031115150288368',
'O202101031118158289643',
'O202101031118299869986',
'O202101031120117733496',
'O202101031120509988512',
'O202101031121071803228',
'O202101031145345242422',
'O202101031145583010515',
'O202101031146234638161'

]

    }

},{

    "$set": {

        "tradeState.flowState": "AUDIT",
         "tradeState.payState": "PAID",
        "tradeState.obsoleteReason":''

    }

},{multi:true})
6.查询oplog中的日志

db.oplog.rs.find({ns:"s2b.trade","o._id":{$in: ["O202101080956556531458"]}})

注:本文就是简单应用,复杂的查询参考官方文档。

<think>好的,用户想知道如何在Navicat修改MongoDB集合的字段。我需要先回忆Navicat的功能和MongoDB的操作步骤。首先,Navicat是一个数据库管理工具,支持多种数据库,包括MongoDB。用户可能需要修改字段名、类型或者结构。 根据用户提供的引用,MongoDB本身可以通过update方法修改字段值,比如使用$set和$rename操作符。引用1提到批量修改字段值,引用4提到了update方法的参数。而Navicat可能提供图形界面操作,不需要写命令。 接下来,我需要分步骤说明如何在Navicat中进行操作。首先,用户需要连接到MongoDB服务器,然后找到目标集合。修改字段可能包括重命名字段、修改数据类型、添加或删除字段。 对于重命名字段,MongoDB通常使用$rename,但在Navicat中可能有直接的界面选项。比如在表设计模式下,直接修改字段名。同样,数据类型可能需要选择不同的类型,比如将字符串改为数字。添加字段的话,用户可能需要在设计视图中添加新行,并指定名称和类型。删除字段则是找到对应字段并移除。 需要注意的是,修改字段类型时,现有数据可能不兼容,需要先处理数据,比如使用引用3中的类型转换方法,但Navicat是否支持批量转换可能需要说明,或者建议用户先备份数据。 另外,用户的问题可能还涉及修改字段值的批量操作,这在Navicat中可能需要使用查询工具执行更新命令,比如类似引用1中的update语句,但通过图形界面输入。 最后,要提醒用户谨慎操作,修改前备份数据,避免数据丢失。可能还需要说明Navicat的不同版本操作略有不同,但大体步骤相似。 总结回答的步骤应该是:连接数据库,打开集合,进入设计表结构界面,进行重命名、类型修改、添加或删除字段,保存更改。对于批量修改值,使用查询工具执行更新命令。同时强调备份的重要性。</think>### 在Navicat修改MongoDB集合字段的方法 #### **步骤1:连接MongoDB数据库** 1. 打开Navicat,点击左上角「连接」按钮,选择「MongoDB」。 2. 填写连接信息(主机、端口、认证信息等),完成后点击「测试连接」,确认无误后保存。 #### **步骤2:定位目标集合** 1. 展开连接的数据库,找到需要修改的集合。 2. 右键点击集合,选择「打开集合」或「设计集合」。 --- #### **修改字段的常见操作** ##### **1. 重命名字段** - **方法1(直接修改):** 在集合设计界面中,找到目标字段名称,双击后直接编辑,保存时Navicat会自动生成`$rename`命令[^4]。 ```javascript // 底层执行的操作类似 db.collection.updateMany({}, { $rename: { "旧字段名": "新字段名" } }); ``` - **方法2(通过查询工具):** 打开「查询」工具,手动输入以下命令并执行: ```javascript db.getCollection('集合名').updateMany({}, { $rename: { "旧字段名": "新字段名" } }); ``` ##### **2. 修改字段类型** 1. **注意:** 直接修改字段类型可能导致数据不一致,需先确保现有数据兼容新类型[^3]。 2. 在集合设计界面中,调整字段的「数据类型」(如从`string`改为`int`)。 3. 若存在类型冲突,需先清理数据,例如使用以下命令: ```javascript db.getCollection('集合名').find({ "字段名": { $type: "string" } }).forEach(function(item) { item.字段名 = parseInt(item.字段名); // 转换为整数 db.getCollection('集合名').save(item); }); ``` ##### **3. 添加新字段** 1. 在集合设计界面中,点击「添加字段」,输入名称并选择类型。 2. 若需初始化默认值,通过查询工具执行: ```javascript db.getCollection('集合名').updateMany({}, { $set: { "新字段名": "默认值" } }); ``` ##### **4. 删除字段** 1. 在集合设计界面中选中字段,点击「删除」按钮。 2. 或通过查询工具执行: ```javascript db.getCollection('集合名').updateMany({}, { $unset: { "字段名": "" } }); ``` --- #### **注意事项** - **备份数据**:修改前右键点击集合选择「导出」进行备份。 - **事务支持**:MongoDB 4.2+支持多文档事务,复杂操作建议在代码中实现[^1]。 - **索引影响**:若字段关联索引,修改后需重建索引。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值