mongodb c-api中的$exists查询
我试图在C中实现以下mongodb查询mongodb c-api中的$exists查询,c,mongodb,bson,mongodb-c,C,Mongodb,Bson,Mongodb C,我试图在C中实现以下mongodb查询 db.test.find({“timestamp”:{“$exists”:true}) 我以为会是这样 bson query, existspart; mongo_cursor cursor; int i; bson_init(&existspart); bson_append_string ( &existspart, "$exists", "false" ); bson_finish(&existspart); bson_in
db.test.find({“timestamp”:{“$exists”:true})代码>
我以为会是这样
bson query, existspart;
mongo_cursor cursor;
int i;
bson_init(&existspart);
bson_append_string ( &existspart, "$exists", "false" );
bson_finish(&existspart);
bson_init(&query);
bson_append_bson ( &query, "timestamp", &existspart );
bson_finish(&query);
mongo_cursor_init(&cursor, conn, "mydb.test");
mongo_cursor_set_query(&cursor, &query );
while( mongo_cursor_next( &cursor ) == MONGO_OK )
{
// blabla
}
但它不起作用。我做错了什么?替换
bson_append_string ( &existspart, "$exists", "false" );
与
或
如果您不希望该字段存在我使用了稍微不同的语法:
bson_t* existspart = BCON_NEW("$exists", BCON_BOOL(true));
bson_t *query = bson_new();
BSON_APPEND_DOCUMENT(query, "timestamp", existspart);
mongoc_cursor_t* cursor = MongoInterface::Instance().Find("db_name", query);
const bson_t *doc;
while (mongoc_cursor_next (cursor, &doc))
{
// Do stuff...
}
bson_destroy (existspart);
bson_destroy (query);
bson_append_bool ( &existspart, "$exists", 0 );
bson_t* existspart = BCON_NEW("$exists", BCON_BOOL(true));
bson_t *query = bson_new();
BSON_APPEND_DOCUMENT(query, "timestamp", existspart);
mongoc_cursor_t* cursor = MongoInterface::Instance().Find("db_name", query);
const bson_t *doc;
while (mongoc_cursor_next (cursor, &doc))
{
// Do stuff...
}
bson_destroy (existspart);
bson_destroy (query);