python-pymongo-指定部分字段格式

python-pymongo-指定部分字段格式


函数指定

from datetime import datetime

def USER_INFO(username: str, is_active=None, update_time=None, create_time=None, _id=None):
    return {
        '_id': t_id,
        'user_name': username,
        'is_active': is_active,
        'update_time': datetime.now(),
        'create_time': datetime.now(),
    }

通过调用函数的方式,来指定我需要的字段是否是必填,是否我需要的格式.

在这里插入图片描述


以下方式不用了

再不自定义_id的情况下, pymongo 需要传入 ObjectId 才能进行查找.

通过_id 查询数据.

# pymongo 自己产生的id查询.
from bson.objectid import ObjectId
# 引入后正常查找就行了
query = {"_id": ObjectId("612df1252c9df273cbedc50a")}

# 自己自定义id进行查询.
query = {"_id": "612df1252c9df273cbedc50a"}

指定部分字段.

import time
from bson.objectid import ObjectId
from dateutil import parser

key_value_type = {
    
    # 表_id
    "_id": "612df1252c9df273cbedc50a",  # 可以自己指定成字符串类型
    "_id_type": {
        "value_1:": bson.ObjectId('612df1252c9df273cbedc50a'),  # 可以自己指定成 ObjectId 类型 内容自己定义.
        "value_2:": '612df1252c9df273cbedc50a',
    },
    # 时间
    "time_type": {
        "value": parser.parse(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())),
    },
    # 整数
    "int_type": {
        "value": 22
    },
    # 浮点数
    "float_type": {
        "value": 22.00
    },
    # 字符串
    "str_type": {
        "value": '22.00'
    },
    # 布尔型
    "bool_type": {
        "value": True
    }

}

查看结果

{
    "_id": "612df1252c9df273cbedc50a",
    "_id_type": {
        "value_1:": {
            "$oid": "612df1252c9df273cbedc50a"
        },
        "value_2:": "612df1252c9df273cbedc50a"
    },
    "time_type": {
        "value": {
            "$date": "2022-04-13T09:44:44Z"
        }
    },
    "int_type": {
        "value": 22
    },
    "float_type": {
        "value": 22
    },
    "str_type": {
        "value": "22.00"
    },
    "bool_type": {
        "value": true
    }
}


### Java BoolQuery 字段内容查询示例 为了实现基于多个条件的复杂查询,在Elasticsearch中可以使用`BoolQueryBuilder`来构建布尔查询。下面是一个具体的例子,展示了如何通过Java API执行带有不同子句(must、should、must_not)的复合查询: ```java // 创建一个新的搜索请求对象并指定索引名称 SearchRequest searchRequest = new SearchRequest("user"); // 初始化搜索源建造者 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); // 使用BoolQueryBuilder创建复杂的查询逻辑 BoolQueryBuilder boolQuery = QueryBuilders.boolQuery() .must(QueryBuilders.matchQuery("name", "张三")) // 必须满足的名字匹配条件 .should(QueryBuilders.termQuery("age", 30)) // 可选年龄等于30岁的条件 .mustNot(QueryBuilders.existsQuery("deleted")); // 排除已删除记录 // 将构建好的bool query加入到source builder里 searchSourceBuilder.query(boolQuery); // 设置返回结果的数量限制为10条 searchSourceBuilder.size(10); // 把配置完成后的builder设置给最初的request对象 searchRequest.source(searchSourceBuilder); try { // 执行实际的搜索操作,并获取响应数据 SearchResponse searchResponse = restHighLevelClient.search( searchRequest, RequestOptions.DEFAULT); // 输出完整的搜索结果信息 System.out.println(searchResponse.toString()); } catch (IOException e) { e.printStackTrace(); } ``` 此代码片段展示了一个典型的场景:在一个名为"user"的索引上查找名字为“张三”的文档;这些文档应该具有30岁这个年龄段(可选项),并且未被标记为已删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值