MongoDB Node 驱动使用指南

news2024/11/23 4:24:31

MongoDB Node 驱动介绍

1. MongoDB数据库连接指南

使用原生的mongodb Node驱动连接MongoDB数据库。

1.1 数据库连接URI

数据库连接URI是一个指明了数据库地址、名称、用户名、密码的字符串,类似于网页链接。

Each part of the connection string

1.2 Node驱动安装

使用Npm或者Yarn安装数据库驱动程序:

npm install mongodb 
# or
yarn install mongodb

如果使用的是Typescript语言,需要额外的安装Node类型定义:

npm install @types/node

1.3 连接到MongoDB

注意:在执行此步骤之前,需要你已经安装了MongoDB数据库,并确保服务开启。

为了避免像迷宫一样的官网带来困扰,可以看这里:MongoDB数据库简介、安装和基本使用

如果你希望自己下载最新版本的数据库,请访问官网:MongoDB: The Developer Data Platform | MongoDB,并按照以下图片指引找到最新版本链接。

在这里插入图片描述

创建js文件,并编辑如下:

import { MongoClient } from 'mongodb';

const uri = 'mongodb://ahohAdmin:123456@127.0.0.1:27017/db_ahoh'


const client = new MongoClient(uri)

async function run() {
    try {
        const database = client.db('db_ahoh')
        const movies = database.collection('movies')
        await movies.insertOne({ name: '我的36个老婆' }) //插入数据

        const query = { name: '我的36个老婆' } //查询条件
        const movie = await movies.findOne(query)   //执行查询   
        console.log(movie)
    } catch (error) {
        console.log(error)
    } finally {
        await client.close()
    }
}

run().catch(console.dir)

以上代码首先插入了一条数据,然后又通过findOne查询了插入的数据。

2. MongoDB数据插入指南

向集合(表)中插入一条或多条数据,MongoDB常用的插入操作有三种:insertOne()insertManybulkWrite()

2.1 默认的数据标识(主键)_id

当我们插入一条文档(数据)时,MongoDB默认的会强制给这条数据插入一个唯一的_id属性。如果我们插入数据的时候,数据中已经有了此属性(id属性也行),MongoDB不会再生成这个属性。

我们可以直接维护这个属性,但是必须保证属性值唯一,也可以使用驱动产生一个唯一表示作为_id的值。

注意:除非你有足够的理由不使用默认值,且保证其值唯一,否则我还是建议你维持现状,让驱动自动的帮你完成这一切。

2.2 插入一条数据

使用insertOne()方法插入一条数据,成功后返回一个InsertOneResult对象的实例展示插入数据的_id值,结构如下:

{
  acknowledged: true,
  insertedId: new ObjectId("639833c04b5b998bcaaaa2af")
}

举例:

import { MongoClient } from 'mongodb';

const uri = 'mongodb://ahohAdmin:123456@127.0.0.1:27017/db_ahoh'
const client = new MongoClient(uri)
async function run() {
    try {
        const database = client.db('db_ahoh')
        const movies = database.collection('movies')
        let res = await movies.insertOne({ name: '我的37个小妾' }) //插入数据
        console.log(`数据成功插入,插入数据的ID是:${res.insertedId}`)
    } catch (error) {
        console.log(error)
    } finally {
        await client.close()
    }
}

run().catch(console.dir)

代码输出结果:

数据成功插入,插入数据的ID是:639834783d714627b8e3ce06

2.3 插入多条数据

使用insertMany()方法插入多条数据,该方法会根据传入的数据依次插入,直到完成作业或发生异常。

insertMany()方法返回一个InsertManyResult对象实例,其结构如下:

{
  acknowledged: true,
  insertedCount: 4,
  insertedIds: {
    '0': new ObjectId("639836f7d9d870a7aa8a0138"),
    '1': new ObjectId("639836f7d9d870a7aa8a0139"),
    '2': new ObjectId("639836f7d9d870a7aa8a013a"),
    '3': new ObjectId("639836f7d9d870a7aa8a013b")
  }
}

例如,假设需要插入以下数据:

{ name: 'bingbing', desc: "The first wife i want." },
{ name: 'xishi', desc: "The second wife i want." },
{ name: 'diaochan', desc: "The third wife i want." },
{ name: 'chenyuanyuan', desc: "The forth wife i want." },

代码如下:

import { MongoClient } from 'mongodb';

const uri = 'mongodb://ahohAdmin:123456@127.0.0.1:27017/db_ahoh'
const client = new MongoClient(uri)
async function run() {
    try {
        const database = client.db('db_ahoh')
        const movies = database.collection('movies')
        let wifes = [
            { name: 'bingbing', desc: "The first wife i want." },
            { name: 'xishi', desc: "The second wife i want." },
            { name: 'diaochan', desc: "The third wife i want." },
            { name: 'chenyuanyuan', desc: "The forth wife i want." },
        ]
        let res = await movies.insertMany(wifes)
        let ids = res.insertedIds
        for (let id of Object.values(ids)) {
            console.log(`inserted wife ${id} successfully`)
        }
    } catch (error) {
        console.log(error)
    } finally {
        await client.close()
    }
}

run().catch(console.dir)

代码输出:

inserted wife 6398376ca83cd05c318c4fec successfully
inserted wife 6398376ca83cd05c318c4fed successfully
inserted wife 6398376ca83cd05c318c4fee successfully
inserted wife 6398376ca83cd05c318c4fef successfully

2.4 执行多个操作

bulkWrite()方法对单个集合一次性执行批量的写操作。这种方法减少了从应用程序到服务器的网络往返次数,从而提高了吞吐量和性能。只有在传递给方法的所有操作完成后,bulkWrite()才会返回所有操作的结果集合。

bulkWrite()返回一个BulkWriteResult对象实例,结构如下:

BulkWriteResult {
  result: {
    ok: 1,
    writeErrors: [],
    writeConcernErrors: [],
    insertedIds: [ [Object], [Object] ],
    nInserted: 2,
    nUpserted: 1,
    nMatched: 0,
    nModified: 0,
    nRemoved: 0,
    upserted: [ [Object] ]
  }
}

我们可以将以下的一个或多个操作放在bulkWrite()中,一次性执行。

  • insertOne
  • updateOne
  • updateMany
  • deleteOne
  • deleteMany
  • replaceOne

举例如下:

import { MongoClient } from 'mongodb';

const uri = 'mongodb://ahohAdmin:123456@127.0.0.1:27017/db_ahoh'
const client = new MongoClient(uri)
async function run() {
    try {
        const database = client.db('db_ahoh')
        const movies = database.collection('movies')
        const result = await movies.bulkWrite([
            {
                insertOne: {//插入一个
                    document: {//文档
                        name: '我的第38个暖床丫头',
                    },
                },
            },
            {
                insertOne: {
                    document: {
                        name: '我的第39个暖床丫头',
                    },
                },
            },
            {
                updateMany: {
                    // Important: You lose type safety when you use dot notation in queries
                    filter: { "name": "xishi" },
                    update: { $set: { name: '吕布' } },
                    upsert: true,
                },
            },
            {
                deleteOne: {
                    filter: { "name": "diaochan" },
                },
            },
        ]);
        console.log(result);
    } catch (error) {
        console.log(error)
    } finally {
        await client.close()
    }
}

run().catch(console.dir)

以上代码执行了两个插入、一个更新、一个删除操作。

代码执行结果:

BulkWriteResult {
  result: {
    ok: 1,
    writeErrors: [],
    writeConcernErrors: [],
    insertedIds: [ [Object], [Object] ],
    nInserted: 2,
    nUpserted: 0,
    nMatched: 3,
    nModified: 3,
    nRemoved: 1,
    upserted: []
  }
}

3. 生成自定义的_id

使用MongoDB Node驱动Primary Key Factory生成_id值。

在创建MongoClient实例时使用pkFactory配置项指明要使用的_id值生成方法。

使用案例:

import { MongoClient } from 'mongodb';
import { UUID } from 'bson';

const uri = 'mongodb://ahohAdmin:123456@127.0.0.1:27017/db_ahoh'
const client = new MongoClient(uri, {
    pkFactory: { createPk: () => new UUID().toBinary() }
})
async function run() {
    try {
        const database = client.db('db_ahoh')
        const movies = database.collection('movies')
        const result = await movies.insertOne({ name: '我的老婆们' })
        console.log(result);
    } catch (error) {
        console.log(error)
    } finally {
        await client.close()
    }
}


run().catch(console.dir)

代码执行结果:

{
  acknowledged: true,
  insertedId: new Binary(Buffer.from("45ea4ddebf4b48be890f0b8a507fc9f2", "hex"), 4)  
}

可以看出,代码执行结果中的insertedId值和默认的_id生成值有明显区别。

4. MongoDB数据删除指南

使用deleteOne()deleteMany()方法,从集合中删除一条或多条数据。

deleteOne()方法删除第一条符合条件的数据,deleteMany()会删除所有匹配的数据。

4.1 删除一条数据

使用deleteOne()方法删除一条数据,该方法会删除第一条符合条件的数据。

deleteOne()方法返回一个DeleteResult对象实例,结构如下:

{ acknowledged: true, deletedCount: 1 }

举例:

import { MongoClient } from 'mongodb';

const uri = 'mongodb://ahohAdmin:123456@127.0.0.1:27017/db_ahoh'
const client = new MongoClient(uri)
async function run() {
    try {
        const database = client.db('db_ahoh')
        const users = database.collection('tb_users')
        const data = [
            {
                username: '如花',
                age: 18
            },
            {
                username: '棒槌',
                age: 34
            },
            {
                username: '吕小布',
                age: 10
            }
        ]
        await users.insertMany(data)
        let result = await users.deleteOne({
            age: {
                $gt: 10
            }
        })
        console.log(result);
    } catch (error) {
        console.log(error)
    } finally {
        await client.close()
    }
}


run().catch(console.dir)

以上代码先插入三条数据,再删除一条数据,虽然符合条件的数据有两条,但是deleteOne()方法仅删除第一条。

代码执行结果:

{ acknowledged: true, deletedCount: 1 }

4.2 删除多条数据

使用deleteMany()方法从集合中删除所有符合条件的数据。

deleteMany()方法返回值类型和deleteOne()相同,请看上文deleteOne()方法介绍。

举例:

import { MongoClient } from 'mongodb';
import { UUID } from 'bson';

const uri = 'mongodb://ahohAdmin:123456@127.0.0.1:27017/db_ahoh'
const client = new MongoClient(uri)
async function run() {
    try {
        const database = client.db('db_ahoh')
        const users = database.collection('tb_users')
        const data = [
            {
                username: '如花',
                age: 18
            },
            {
                username: '棒槌',
                age: 34
            },
            {
                username: '吕小布',
                age: 10
            }
        ]
        await users.insertMany(data)
        let result = await users.deleteMany({//deleteMany
            age: {
                $gt: 10
            }
        })
        console.log(result);
    } catch (error) {
        console.log(error)
    } finally {
        await client.close()
    }
}


run().catch(console.dir)

以上代码插入三条数据,并删除两条符合条件的数据。

代码执行结果:

{ acknowledged: true, deletedCount: 2 }

注意:执行代码前需要保证数据库中没有其他数据影响结果。

4. MongoDB更新、替换数据

使用update()replace()方法更新或替换数据。

update()相关方法更新一条或多条数据中的指定属性,并保持无关属性不变。

replace()相关方法使用指定的数据替换现有数据的全部内容。

4.1 更新文档中的一条或多条数据

使用update()更新数据时,需要配合更新操作符(更新的类型) 和描述属性值的数据。

NameDescription
$currentDate将字段的值设置为当前日期,作为日期或时间戳。
$inc将字段值增加指定的值。
$min仅当指定值小于现有字段值时更新字段。
$max仅当指定值大于现有字段值时才更新字段。
$mul将字段的值乘以指定的值。
$rename重命名字段。
$set设置文档中字段的值。
$setOnInsert如果更新导致插入文档,则设置字段的值。对修改现有文档的更新操作无效。
$unset从文档中删除指定的字段。

1. $currentDate 使用方法

将指定字段更新为当前日期:

  • 如果字段存在,更新为当前日期
  • 如果字段不存在,添加后更新为当前日期
  • 如果字段类型为timestamp,更新为时间戳格式

举例:

import { MongoClient } from 'mongodb';
import { UUID } from 'bson';

const uri = 'mongodb://ahohAdmin:123456@127.0.0.1:27017/db_ahoh'
const client = new MongoClient(uri)
async function run() {
    try {
        const database = client.db('db_ahoh')
        const users = database.collection('tb_users')
        const inserted = await users.insertOne(
            { name: "a", birthday: new Date("2013-10-02T01:11:18.965Z") }
        )
        const result = await users.updateOne(
            { _id: inserted.insertedId }, {
            $currentDate: {
                birthday: true, //更新为当前日期
                today: true,    //添加新字段为当前日期
                //添加时间戳字段
                today_timestamp: { $type: "timestamp" }
            }
        })
        console.log(result);
    } catch (error) {
        console.log(error)
    } finally {
        await client.close()
    }
}

run().catch(console.dir)


代码执行结果:

{
  acknowledged: true,
  modifiedCount: 1,
  upsertedId: null,
  upsertedCount: 0,
  matchedCount: 1
}

更新后的数据结果:

{
  "_id": {
    "$oid": "6398648608232b5c01ac4681"
  },
  "name": "a",
  "birthday": {
    "$date": {
      "$numberLong": "1670931590238"
    }
  },
  "today": {
    "$date": {
      "$numberLong": "1670931590238"
    }
  },
  "today_timestamp": {
    "$timestamp": {
      "t": 1670931590,
      "i": 1
    }
  }
}

mongodb 使用currentDate更新时间

2. $inc 使用方法

$inc操作符可以将指定属性增加或减少指定的值。

举例:

import { MongoClient } from 'mongodb';
import { UUID } from 'bson';

const uri = 'mongodb://ahohAdmin:123456@127.0.0.1:27017/db_ahoh'
const client = new MongoClient(uri)
async function run() {
    try {
        const database = client.db('db_ahoh')
        const users = database.collection('tb_users')
        const inserted = await users.insertOne(
            { name: "小红", age: 18, height: 180 }
        )
        const result = await users.updateOne(
            { _id: inserted.insertedId }, {
            $inc: {
                age: 1,
                height: -20
            }
        })
        console.log(result);
    } catch (error) {
        console.log(error)
    } finally {
        await client.close()
    }
}

run().catch(console.dir)


以上案例将age属性增加1height属性减少20

代码执行结果:

{
  acknowledged: true,
  modifiedCount: 1,
  upsertedId: null,
  upsertedCount: 0,
  matchedCount: 1
}

数据执行结果:

{
  "_id": {
    "$oid": "63988eda0b60c398230afeac"
  },
  "name": "小红",
  "age": 19,
  "height": 160
}

$min的使用方法

3. $min$max 使用方法

$min操作符会将数据原有值和更新值进行比较,取较小的值更新数据;

$max操作符会将数据原有值和更新值进行比较,取较大的值更新数据;

举例:

import { MongoClient } from 'mongodb';
import { UUID } from 'bson';

const uri = 'mongodb://ahohAdmin:123456@127.0.0.1:27017/db_ahoh'
const client = new MongoClient(uri)
async function run() {
    try {
        const database = client.db('db_ahoh')
        const users = database.collection('tb_users')
        const inserted = await users.insertOne(
            { name: "小红", age: 18, height: 180 }
        )
        const result = await users.updateOne(
            { _id: inserted.insertedId }, {
            $min: {
                age: 17,
            },
            $max: {
                height: 170,
            }
        })
        console.log(result);
    } catch (error) {
        console.log(error)
    } finally {
        await client.close()
    }
}

run().catch(console.dir)


以上代码中:

$min操作符将1718比较,将较小的17更新到数据库;

$max操作符将170180比较,由于原有值180更大,所以不更新原有值。

以上代码执行结果:

{
  acknowledged: true,
  modifiedCount: 1,
  upsertedId: null,
  upsertedCount: 0,
  matchedCount: 1
}

数据执行结果:

{
  "_id": {
    "$oid": "639890ddf0b0a837ff5ced49"
  },
  "name": "小红",
  "age": 17,
  "height": 180
}

$max的使用方法

4. $mul使用方法

$mul将指定字段的值乘以指定的数字,针对不存在的属性,会将其置为0

举例:

import { MongoClient } from 'mongodb';


const uri = 'mongodb://ahohAdmin:123456@127.0.0.1:27017/db_ahoh'
const client = new MongoClient(uri)
async function run() {
    try {
        const database = client.db('db_ahoh')
        const users = database.collection('tb_users')
        const inserted = await users.insertOne(
            { name: "小红", age: 18, height: 180, price: 1.234 }
        )
        const result = await users.updateOne(
            { _id: inserted.insertedId }, {
            $mul: {
                age: 2,//age属性乘以2
                price: 3.4,//price属性乘以3.4
            }
        })
        console.log(result);
    } catch (error) {
        console.log(error)
    } finally {
        await client.close()
    }
}

run().catch(console.dir)

以上代码中,由于weight原本不存,所以会被置为0

代码执行结果:

{
  acknowledged: true,
  modifiedCount: 1,
  upsertedId: null,
  upsertedCount: 0,
  matchedCount: 1
}

$mul使用方法

5. $rename 使用方法

$rename 操作符能够更新属性的名称,也就是更新列名。

举例:

import { MongoClient } from 'mongodb';

const uri = 'mongodb://ahohAdmin:123456@127.0.0.1:27017/db_ahoh'
const client = new MongoClient(uri)
async function run() {
    try {
        const database = client.db('db_ahoh')
        const users = database.collection('tb_users')
        const inserted = await users.insertOne(
            { name: "小红", age: 18, height: 180, price: 1.234 }
        )
        const result = await users.updateMany(
            {}, {
            $rename: {
                name: 'nickname',
            }
        })
        console.log(result);
    } catch (error) {
        console.log(error)
    } finally {
        await client.close()
    }
}

run().catch(console.dir)

以上代码将对象的属性值name名称修改为nickname

代码执行结果(这个结果和当前数据库中数据量有关):

{
  acknowledged: true,
  modifiedCount: 7,
  upsertedId: null,
  upsertedCount: 0,
  matchedCount: 13
}

$rename使用方法

6. $set 使用方法

$set操作符将使用指定的值替换指定属性的值,也就是常规意义上的更新。

举例:

import { MongoClient } from 'mongodb';

const uri = 'mongodb://ahohAdmin:123456@127.0.0.1:27017/db_ahoh'
const client = new MongoClient(uri)
async function run() {
    try {
        const database = client.db('db_ahoh')
        const users = database.collection('tb_users')
        const inserted = await users.insertOne(
            { name: "小红", age: 18, height: 180, price: 1.234 }
        )
        const result = await users.updateMany(
            { _id: inserted.insertedId }, {
            $set: {
                name: '猪会飞',
                age: '999',
                'family.father': '熊大',
                'family.mather': '熊二'
            }
        })
        console.log(result);
    } catch (error) {
        console.log(error)
    } finally {
        await client.close()
    }
}

run().catch(console.dir)


以上代码更新了nameage属性,同时对两个不存在的深层次属性进行了值更新,此操作会再对象中插入新的值。

代码执行结果:

{
  acknowledged: true,
  modifiedCount: 1,
  upsertedId: null,
  upsertedCount: 0,
  matchedCount: 1
}

数据执行结果:

{
  "_id": {
    "$oid": "63992092c03bbf3fd49c8e3e"
  },
  "name": "猪会飞",
  "age": "999",
  "height": 180,
  "price": 1.234,
  "family": {
    "father": "熊大",
    "mather": "熊二"
  }
}

$set使用方法

7. $setOnInsert 使用方法

$setOnInsert只会在设置了upsert:true的写操作中产生作用。

upsert选项指的是update + insert,即指定的对象如果存在就更新该对象。

如果指定的对象不存在,就插入一个新的对象。

如果一个更新操作由于设置了upsert:true导致要插入一条新数据,此时$setOnInsert操作符就会对新插入的这条数据起作用,否则,不起作用。

举例:

import { MongoClient } from 'mongodb';


const uri = 'mongodb://ahohAdmin:123456@127.0.0.1:27017/db_ahoh'
const client = new MongoClient(uri)
async function run() {
    try {
        const database = client.db('db_ahoh')
        const users = database.collection('tb_users')
 
        const result = await users.updateOne(
            { _id: 'xxx' },
            { $set: { name: '999' }, $setOnInsert: { xxx: 'xxx' } },
            { upsert: true })
        
        console.log(result);
    } catch (error) {
        console.log(error)
    } finally {
        await client.close()
    }
}

run().catch(console.dir)

以上代码针对_id = 'xxxx'的数据执行更新操作,存在两种结果:

  • 如果该数据并不存在,所以upsert:true设置允许更新操作插入一条新数据,此时,$setOnInsert指定的内容就会被写入新插入的数据中;
  • 如果该数据存在,不会有新的数据产生,更新操作只执行$set指定的更新内容,而不会执行$setOnInsert指定的内容。

以下是目标数据不存在时的执行结果:

{
  acknowledged: true,
  modifiedCount: 0,
  upsertedId: 'xxx',
  upsertedCount: 1,  # 有新数据插入
  matchedCount: 0
}

$setOnInsert使用方法

8. $unset 使用方法

$unset 操作符删除指定的属性,也就是删除表中的列元素。

举例:

import { MongoClient } from 'mongodb';


const uri = 'mongodb://ahohAdmin:123456@127.0.0.1:27017/db_ahoh'
const client = new MongoClient(uri)
async function run() {
    try {
        const database = client.db('db_ahoh')
        const users = database.collection('tb_users')
    
        const result = await users.updateMany(
            {},
            { $unset: { name: '' } })

        console.log(result);
    } catch (error) {
        console.log(error)
    } finally {
        await client.close()
    }
}

run().catch(console.dir)

以上代码删除表中所有数据的name属性。

未完待续,催更请踢我。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/89996.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

40_CAN通信基础知识

目录 CAN协议简介 CAN物理层 闭环总线网络 闭环总线网络 开环总线网络 通讯节点 差分信号 CAN协议中的差分信号 CAN协议层 CAN的波特率及位同步 位时序分解 SS段(SYNC SEG) PTS段(PROP SEG) PBS1段(PHASE SEG1) PBS2段(PHASE SEG2) 通讯的波特率 CAN的报文种类…

和数链技术与供应链金融的革命性融合发展

区块链是由密码技术、共识机制、点对点通信协议、分布式存储等多种核心技术体系高度融合,形成的一种分布式基础架构与计算范式,其本质则是一套去中心化的记账系统。区块链技术凭借自身分布式共享账本、去中心化、透明性、隐私保护、节点控制、信息的不可…

[附源码]计算机毕业设计的剧本杀管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis MavenVue等等组成,B/S模式…

java+mysql基于ssm的校园快递代领系统

当代大学生的课业都比较繁重,很多学子甚至选修了双学位,但是为了保障生活的质量难免会在网上购买一些生活和学习用品,但是又因为学业或者兼职等原因不能按时的领取属于自己的快递,这个时候一个新兴的行业校园快递代领服务诞生了 本系统是一个校园快递代领系统,服务人员可以在线…

【Git】常用命令详解(循序渐进,逐步分析)

目录 一、Git常用命令 1.1、设置用户签名 1.2、初始化本地库 1.3查看本地库状态 1.3、添加文件到暂存区 1.4、将暂存区文件添加文件到本地库 1.5、查看历史版本(提交历史记录) 1.6、修改文件 1.7、版本穿梭 一、Git常用命令 1.1、设置用户签名…

前端浏览器支持的JS文件操作技术介绍

前端浏览器支持的JS文件操作技术介绍 本文将介绍前端浏览器支持的JS文件操作技术。通过使用在 HTML5 中加入到 DOM 的 File API&#xff0c;使在 web 内容中让用户选择本地文件然后读取这些文件的内容成为可能。用户可以通过 HTML 中的 <input type"file"> 元…

Python动态可视化Plotly

✨ 介绍 Plotly Express ✨&#xff1a; 提示&#xff1a;这里可以添加学习目标 Plotly Express是一个新的高级 Python 可视化库&#xff1a;它是Plotly.py的包装器&#xff0c;为复杂图表提供了简单的语法。受 Seaborn 和 ggplot2 的启发&#xff0c;它专门设计为具有简洁、…

【Meetup 明天见】OpenMLDB + MaxCompute:集成打通云上生态,高效构建 AI 应用

明天上午10&#xff1a;00-12:00&#xff0c;OpenMLDB 第八期 Meetup 将全程线上直播&#xff0c;欢迎关注。 活动背景 数据的爆发式增长为 AI 应用的繁荣提供了坚实的基础&#xff0c;而云服务作为新一代快速整合、高效计算的服务模式&#xff0c;为大数据的分析处理和 AI 智…

MySQL中SQL的执行流程

1 查询缓存 Server 如果在查询缓存中发现了这条 SQL 语句&#xff0c;就会直接将结果返回给客户端&#xff1b;如果没有&#xff0c;就进入到解析器阶段。需要说明的是&#xff0c;因为查询缓存往往效率不高&#xff0c;所以在 MySQL8.0 之后就抛弃了这个功能。 大多数情况查询…

Reconstructing Capsule Networks for Zero-shot Intent Classification

摘要 intent classification 意图分类。dialogue systems 对话系统已经存在的系统并没有能力去处理快速增长的意图。zero-shot intent classifcation&#xff1a; 零样本意图分类。 Nevertheless 不过。 incipient stage 初期阶段 今年来提出的IntentCapsNet two unaddresse…

基于java+springboot+mybatis+vue+mysql的智慧外贸平台

项目介绍 智慧外贸平台能够通过互联网得到广泛的、全面的宣传&#xff0c;让尽可能多的用户了解和熟知智慧外贸平台的便捷高效&#xff0c;不仅为群众提供了服务&#xff0c;而且也推广了自己&#xff0c;让更多的群众了解自己。对于智慧外贸而言&#xff0c;若拥有自己的系统…

播放量超1500w,谁的恰饭两次都在B站成顶流?

- 导语 女性消费一直以来都是消费市场的主力&#xff0c;“她经济”市场应运而生。有关数据显示&#xff0c;我国拥有近4亿消费者为女性&#xff0c;在如此庞大购买力的驱动下&#xff0c;截至目前统计我国共有492.9万家“她经济”相关企业&#xff0c;其中有3/4的是近5年内成…

【Spring】——16、使用@Autowired、@Qualifier、@Primary这三大注解自动装配组件?

&#x1f4eb;作者简介&#xff1a;zhz小白 公众号&#xff1a;小白的Java进阶之路 专业技能&#xff1a; 1、Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理 2、熟悉Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理&#xff0c;具备⼀定的线…

【Redis】Redis事务工作原理解析与分布式事务实战(Redis专栏启动)

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

8.Django大型电商项目之商品添加分页

1.添加分页 添加分页在Django中使用自带分页器paginator 1.1 配置setting settings中配置分页数量 # 每页显示记录条数 PER_PAGE_NUMBER 81.2 配置views 完成分页栏使用paginator创建对象&#xff0c;返回选中条数 from django.shortcuts import render from goodsapp.mo…

桶排序算法

题目 代码1&#xff1a; #include <stdio.h> int main() {int sz0;scanf("%d",&sz);int arr[sz];//输入int i0;for (i0;i<sz;i){scanf("%d",&arr[i]);}//删除多余相同元素int j0;int k0;for (i0;i<sz;i){if (i0){arr[j]arr[i];}else{…

MyBatis批量保存(Oracle)MyBatis批量插入时,组装SQL过长会有问题,一定要根据批量插入数据量进行切割,再批次提交保存!!!

MyBatis批量保存&#xff08;Oracle&#xff09; oracle 批量插入与mysql 的批量插入的方式不同 insert into tablename()values(),(),(); ---这个是mysql 的批量插入形式 insert all into tablename() values() into tablename() values() -------这个是Oracle批量插入形式 你…

大数据测试 - 数仓测试

前言 对于数据仓库的测试来说底层的系统会有很多有自建的集群使用 spark 或者 flink 测试&#xff0c;也有很多直接使用云厂商的产品比如 datworks 等等&#xff0c;再这里我想分享下抛开环境&#xff0c;只对数据仓库测试的一些小心得。 数仓分层设计 标准数仓分为 ODS,DWD…

java计算机毕业设计基于安卓Android的微整形美容app

项目介绍 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设…

前缀和问题

前缀和 一维二维 ac795. 前缀和【一维】 输入一个长度为 nn 的整数序列。 接下来再输入 mm 个询问&#xff0c;每个询问输入一对 l,rl,r。 对于每个询问&#xff0c;输出原序列中从第 ll 个数到第 rr 个数的和。 输入格式 第一行包含两个整数 nn 和 mm。 第二行包含 nn…