javascript - MongoDb - 如何以 ObjectId("") 作为值创建有效的 JSON/Javascript 对象?
问题描述
以下是有效的 MongoDb 查询:
db.persons.aggregate([{
"$match": {
"$or": [{
"$expr": {
"$eq": ["$_id", ObjectId("5f3258cfbaaccedaa5dd2c96")]
}
}]
}
}])
但是这里的问题是我无法创建一个有效的 JavaScript 对象,如下所示:
[{
"$match": {
"$or": [{
"$expr": {
"$eq": ["$_id", ObjectId("5f3258cfbaaccedaa5dd2c96") ]
}
}]
}
}
}]
因为ObjectId("5f3258cfbaaccedaa5dd2c96"
既不是字符串也不是数字。我需要一个有效的 javascript 对象,因为我想将它存储在某处并即时获取并执行,我该怎么做?
编辑: 我在节点中尝试了以下内容:
var mquery=[
{
"$match": {
"$or": [
{
"$expr": {
"$eq": [
"$_id",
{
"$oid": "5f3258cfbaaccedaa5dd2c96"
}
]
}
}
]
}
}
];
const result = await this.db.collection("persons").aggregate(mquery).toArray();
并得到:
MongoError: Unrecognized expression '$oid'
解决方案
您可以使用$toObjectId,将字符串 id 转换为对象 id,
db.persons.aggregate([
{
"$match": {
"$or": [
{ "$expr": { "$eq": ["$_id", { "$toObjectId": "5f3258cfbaaccedaa5dd2c96" }] } }
]
}
}
])
推荐阅读
- r - 查找公共和唯一数字并将它们放入 R 中的新整数向量中
- validation - WTForms 和 Flask - 在另一个字段中验证文件大小
- javascript - reactjs中如何进行路由
- python - Pandas - 如何按日期选择事件并创建新的有序数据框。- 手术患者
- c# - 在C#中从串口接收数据,同时更新ui
- c# - 在 .NET MVC 应用程序中从静态方法更改为非静态方法
- javascript - 基于无线电选择的隐藏类
- java - 如何决定一组标记何时应该成为一个集群?
- c++ - 带有向量的移动与复制构造函数
- ubuntu - shellscript的crontab