建议在C驱动程序中使用什么,mongoc_collection_command使用“insert”或mongoc_collection_insert

时间:2016-02-17 07:36:40

标签: mongodb

使用C驱动程序工作一段时间后,阅读教程和API。 我有点困惑,
根据本教程:http://api.mongodb.org/c/current/executing-command.html
我可以执行DB和Collections命令,其中也包括CRUD命令。 如果我不在命令API中使用“_simple”,我甚至可以获得Document光标 那么为什么我需要使用例如mongoc_collection_insert()API命令?
有什么区别 ?建议什么?
谢谢

1 个答案:

答案 0 :(得分:1)

这个问题可能类似于通过mongo shell使用insert commanddb.collection.insert()之间的区别。

mongoc_collection_insert()是为将文档插入集合而编写的特定函数,而mongoc_collection_command()用于在集合上执行任何有效的database commands

我建议尽可能使用API​​函数(mongoc_collection_insert)。原因如下:

  • API函数已被编写为具有特定用途的抽象层,因此您无需处理与该命令相关的其他详细信息。

    例如,mongoc_collection_insert公开了用于插入具有相应默认值的mongoc_write_concern_tmongoc_insert_flags_t的正确参数。另一方面,mongoc_collection_command具有广泛的参数,例如mongoc_read_prefs_tskiplimit,这些参数可能与插入文档无关。

  • mongoc_collection_insert的任何未来更改都可能更适合使用正确的插入上下文。

  • 特别是对于CRUD,请尽量避免使用命令,因为MongoDB wire protocol为命令(OP_MSG:1000)和插入(OP_INSERT:2002)指定了不同的request opcodes