使用C驱动程序工作一段时间后,阅读教程和API。
我有点困惑,
根据本教程:http://api.mongodb.org/c/current/executing-command.html
我可以执行DB和Collections命令,其中也包括CRUD命令。
如果我不在命令API中使用“_simple”,我甚至可以获得Document光标
那么为什么我需要使用例如mongoc_collection_insert()API命令?
有什么区别 ?建议什么?
谢谢
答案 0 :(得分:1)
这个问题可能类似于通过mongo shell使用insert command或db.collection.insert()之间的区别。
mongoc_collection_insert()是为将文档插入集合而编写的特定函数,而mongoc_collection_command()用于在集合上执行任何有效的database commands。
我建议尽可能使用API函数(mongoc_collection_insert
)。原因如下:
API函数已被编写为具有特定用途的抽象层,因此您无需处理与该命令相关的其他详细信息。
例如,mongoc_collection_insert
公开了用于插入具有相应默认值的mongoc_write_concern_t和mongoc_insert_flags_t的正确参数。另一方面,mongoc_collection_command
具有广泛的参数,例如mongoc_read_prefs_t,skip
或limit
,这些参数可能与插入文档无关。
mongoc_collection_insert
的任何未来更改都可能更适合使用正确的插入上下文。
特别是对于CRUD,请尽量避免使用命令,因为MongoDB wire protocol为命令(OP_MSG:1000)和插入(OP_INSERT:2002)指定了不同的request opcodes。