为什么 MongoDB 会抛出错误 "ns does not exist"?
Why does MongoDB throw error "ns does not exist"?
我不明白为什么 MongoDB 使用以下 NodeJS 代码会触发错误:
import {
Collection,
Document,
Filter,
IndexDirection,
MongoClient,
ObjectId
} from "mongodb";
export const client = new MongoClient(process.env.DB_URL);
await client.connect();
export const database = client.db(process.env.DB_NAME);
await database.command({ ping: 1 });
const users = database.collection("User");
console.log({ count: await users.countDocuments() }); // prints 0
await database.command({
collMod: "User",
validator: {
$jsonSchema: {
bsonType: "object",
required: ["_id", "email"],
additionalProperties: false,
properties: {
_id: { bsonType: "objectId" },
email: { bsonType: "string" }
}
}
},
validationLevel: "strict"
}); // triggers error
最后一条指令触发了以下错误:
MongoServerError: ns does not exist
我明白这是因为集合不存在,但调用 command
时它不应该存在吗?谢谢!
我会投票认为 await users.countDocuments()
returns 0 作为解决方法,实际上这里发生的是:
ns not found exception
被抛出。
- 这个异常是通过返回 0 来处理的,没有实际的异常。
您也可以在 shell 中看到它:
MongoDB Enterprise replset:PRIMARY> use notexisteddb
switched to db notexisteddb
MongoDB Enterprise replset:PRIMARY> db.coll.count()
0
MongoDB Enterprise replset:PRIMARY> show collections
MongoDB Enterprise replset:PRIMARY>
我不明白为什么 MongoDB 使用以下 NodeJS 代码会触发错误:
import {
Collection,
Document,
Filter,
IndexDirection,
MongoClient,
ObjectId
} from "mongodb";
export const client = new MongoClient(process.env.DB_URL);
await client.connect();
export const database = client.db(process.env.DB_NAME);
await database.command({ ping: 1 });
const users = database.collection("User");
console.log({ count: await users.countDocuments() }); // prints 0
await database.command({
collMod: "User",
validator: {
$jsonSchema: {
bsonType: "object",
required: ["_id", "email"],
additionalProperties: false,
properties: {
_id: { bsonType: "objectId" },
email: { bsonType: "string" }
}
}
},
validationLevel: "strict"
}); // triggers error
最后一条指令触发了以下错误:
MongoServerError: ns does not exist
我明白这是因为集合不存在,但调用 command
时它不应该存在吗?谢谢!
我会投票认为 await users.countDocuments()
returns 0 作为解决方法,实际上这里发生的是:
ns not found exception
被抛出。- 这个异常是通过返回 0 来处理的,没有实际的异常。
您也可以在 shell 中看到它:
MongoDB Enterprise replset:PRIMARY> use notexisteddb
switched to db notexisteddb
MongoDB Enterprise replset:PRIMARY> db.coll.count()
0
MongoDB Enterprise replset:PRIMARY> show collections
MongoDB Enterprise replset:PRIMARY>