星辰大海

人生万事须自为,跬步江山即寥廓

MongDB 中 $in 查询操作符是非常强大的,但是在使用中有可能受 Mysql 的使用习惯所影响,导致忽略了 $in 的一些高级用法,比如对数组字段也可以使用 $in

本文对 $in 的使用进行详细的总结。

阅读全文 »

在代码中经常会遇到需要把对象复制一遍,或者把属性名相同的值复制一遍。为了使得复制操作更加优雅,可以使用下列方式来进行复制,而不必针为每个类实现克隆操作。

阅读全文 »

在使用 yarn install 安装依赖包时,提示如下错误:

1
2
3
4
5
6
Command: git
Arguments: ls-remote --tags --heads git://github.com/adobe-webplatform/eve.git
Directory: D:\Develop\BIM\swToolsFrontEnd
Output:
fatal: unable to connect to github.com:
github.com[0: 20.205.243.166]: errno=Unknown error
阅读全文 »

在使用 yarn install 安装私有包时,由于仓库需要认证,但 Yarn 的安装过程不允许交互式提示,所以当 Git 请求用户名时,它无法提供,会导致权限被拒的情况:

1
2
3
remote: [session-2a4ee1aa] Access denied
fatal: unable to access 'https://gitee.com/my-packages/camera-preview.git/': The requested URL returned error: 403
root@d24630a9ec27:/app/frontend-cross# git ls-remote --tags --heads https://gitee.com/my-packages/camera-preview.git

可以使用两种方法来解决。

阅读全文 »

经验证,在使用 Mongoose 包来进行 MongoDB 查询时,在非聚合(aggregate)语句中,可以直接使用字符串型 ObjectId 进行匹配查找和赋值,比如:create、find、findOne、findByIdAndDelete、$in 等方法中都可以使用字符串型 ObjectId。

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
model.find({
_id: '5f68710c4da61820f461e0c0'
})

model.find({
_id:{$in:['5f68710c4da61820f461e0c0']}
})

model.updateMany({
_id:{$in:['5f68710c4da61820f461e0c0']}
},
{
// 也可以用字符串id数组赋值给 ObjectId 数组字段
ids: ['5f68710c4da61820f461e0c0']
})

上面的这种字符串 id 去匹配 ObjectId 机制,在聚合中不支持,在聚合中使用时,需要将字符串的 Id 转成 ObjectId。