将数据写入 MongoDB
Overview
在此页面上,您可以查看可复制的代码示例,这些示例显示了可用于通过C驾驶员将数据写入MongoDB的常用函数。
提示
要学习;了解有关此页面上显示的任何功能的更多信息,请参阅每个部分中提供的链接。
要使用本页中的示例,请将代码示例复制到示例应用程序或您自己的应用程序中。 请务必将代码示例中的所有占位符(例如 <connection string URI>
)替换为 MongoDB 部署的相关值。
示例应用程序
您可以使用以下示例应用程序来测试本页上的代码示例。 要使用示例应用程序,请执行以下步骤:
确保已安装C驾驶员程序。
复制以下代码并将其粘贴到新的
.c
文件中。从此页面复制代码示例,并将其粘贴到文件中的指定行。
1 2 3 4 5 int 6 main (void) 7 { 8 mongoc_client_t *client; 9 mongoc_collection_t *collection; 10 char *str; 11 bson_error_t error; 12 13 mongoc_init (); 14 15 client = 16 mongoc_client_new ("<connection string URI>"); 17 collection = 18 mongoc_client_get_collection (client, "<database name>", "collection name"); 19 20 // Start example code here 21 22 // End example code here 23 24 mongoc_collection_destroy (collection); 25 mongoc_client_destroy (client); 26 mongoc_cleanup (); 27 28 return EXIT_SUCCESS; 29 }
insertOne
以下代码演示如何将单个文档插入集合:
bson_t *document = BCON_NEW ("<field name>", BCON_UTF8 ("<value>")); bson_error_t error; if (!mongoc_collection_insert_one ( collection, document, NULL, NULL, &error)) { fprintf (stderr, "Insert one operation failed: %s\n", error.message); } bson_destroy (document);
插入多个
以下代码演示了如何将多个文档插入到集合中:
size_t num_docs = 2; bson_t *docs[num_docs]; docs[0] = BCON_NEW ("<field name>", BCON_UTF8 ("<value>")); docs[1] = BCON_NEW ("<field name>", BCON_UTF8 ("<value>")); bson_error_t error; if (!mongoc_collection_insert_many (collection, (const bson_t **) docs, num_docs, NULL, NULL, &error)) { fprintf (stderr, "Insert many operation failed: %s\n", error.message); } bson_destroy (docs[0]); bson_destroy (docs[1]);
要学习;了解有关mongoc_collection_insert_many()
函数的更多信息,请参阅“插入文档”指南。
updateOne
以下代码演示如何通过创建或编辑字段来更新集合中的单个文档:
bson_t *query = BCON_NEW ("<field to match>", BCON_UTF8 ("<value to match>")); bson_t *update = BCON_NEW ("$set", "{", "<field name>", BCON_UTF8 ("<value>"), "}"); bson_error_t error; if (!mongoc_collection_update_one (collection, query, update, NULL, NULL, &error)) { fprintf (stderr, "Update one operation failed: %s\n", error.message); } bson_destroy (query); bson_destroy (update);
更新多个
以下代码演示如何通过创建或编辑字段来更新集合中的多个文档:
bson_t *query = BCON_NEW ("<field to match>", BCON_UTF8 ("<value to match>")); bson_t *update = BCON_NEW ("$set", "{", "<field name>", BCON_UTF8 ("<value>"), "}"); bson_error_t error; if (!mongoc_collection_update_many (collection, query, update, NULL, NULL, &error)) { fprintf (stderr, "Update many operation failed: %s\n", error.message); } bson_destroy (query); bson_destroy (update);
deleteOne
以下代码演示如何删除集合中的单个文档:
bson_t *filter = BCON_NEW ("<field name>", BCON_UTF8 ("<value>")); bson_error_t error; if (!mongoc_collection_delete_one (collection, filter, NULL, NULL, &error)) { fprintf (stderr, "Delete error: %s\n", error.message); } bson_destroy (filter);
删除多个
以下代码演示如何删除集合中的多个文档:
bson_t *filter = BCON_NEW ("<field name>", BCON_UTF8 ("<value>")); bson_error_t error; if (!mongoc_collection_delete_many (collection, filter, NULL, NULL, &error)) { fprintf (stderr, "Delete error: %s\n", error.message); } bson_destroy (filter);
要学习;了解有关mongoc_collection_delete_many()
函数的更多信息,请参阅“删除文档”指南。
批量写入
以下代码展示了如何在单个批量操作中执行多个写入操作:
bson_error_t error; mongoc_bulk_operation_t *bulk = mongoc_collection_create_bulk_operation_with_opts (collection, NULL); bson_t *insert_doc = BCON_NEW ( "<field name>", BCON_UTF8 ("<value>"), "<field name>", BCON_UTF8 ("<value>"), "<field name>", BCON_UTF8 ("<value>"), "<field name>", BCON_UTF8 ("<value>") ); mongoc_bulk_operation_insert(bulk, insert_doc); bson_destroy (insert_doc); bson_t *query = BCON_NEW ("<field to match>", BCON_UTF8 ("<value to match>")); bson_t *update = BCON_NEW ("$set", "{", "<field name>", BCON_UTF8 ("<value>"), "}"); mongoc_bulk_operation_update_one(bulk, query, update, false); bson_destroy(query); bson_destroy(update); bool result = mongoc_bulk_operation_execute(bulk, NULL, &error); if (!result) { fprintf (stderr, "Bulk operation error: %s\n", error.message); } mongoc_bulk_operation_destroy (bulk);
要学习;了解有关mongoc_collection_bulk_operation_execute()
函数的详情,请参阅批量写入操作指南。