现在 mongodb 中有如下数据
{
"_id":"111",
"bgtime":"bgtime",
"edtime":"edtime",
"key1":"val1",
"key2":"val2",
"key3":"val3"
}
我写的程序对应的 shell 命令是
db.coll.update(
{
"bgtime":{$exists:true},
"edtime":{$exists:true},
"key1":"val1",
"key2":"val2"
},
{
$set:
{
"bgtime":"bgtime",
"edtime":"edtime",
"key1":"val1",
"key2":"val2"
}
},
{
$upsert:true
})
我想要获得的结果是一条数据中除了"_id"外只有查询条件的 4 个 key ,如果查不到的这样的 document 的话,将 update 中的文档插入,但是我写的过滤文档因为查到了数据库中的上述的数据,所以就不会再做插入了,现在有两个想法:
1.先使用 find_many ( mongocxx 中的 api )找到所有匹配到的文档,然后去和我的键值对做匹配,但是这样工作量比较大
2.在每次插入数据的时候都多插入一条 key 为_index 的字段,里面的 value 为"key1val (此处设计一个分隔符) key2val2",这样写查询条件的时候直接拼接_index 的 value 也是可以的。
现在就是想看看 mongodb 有没有提供这样一种方法,直接做到完全匹配到我查询的文档
{
"_id":"111",
"bgtime":"bgtime",
"edtime":"edtime",
"key1":"val1",
"key2":"val2",
"key3":"val3"
}
我写的程序对应的 shell 命令是
db.coll.update(
{
"bgtime":{$exists:true},
"edtime":{$exists:true},
"key1":"val1",
"key2":"val2"
},
{
$set:
{
"bgtime":"bgtime",
"edtime":"edtime",
"key1":"val1",
"key2":"val2"
}
},
{
$upsert:true
})
我想要获得的结果是一条数据中除了"_id"外只有查询条件的 4 个 key ,如果查不到的这样的 document 的话,将 update 中的文档插入,但是我写的过滤文档因为查到了数据库中的上述的数据,所以就不会再做插入了,现在有两个想法:
1.先使用 find_many ( mongocxx 中的 api )找到所有匹配到的文档,然后去和我的键值对做匹配,但是这样工作量比较大
2.在每次插入数据的时候都多插入一条 key 为_index 的字段,里面的 value 为"key1val (此处设计一个分隔符) key2val2",这样写查询条件的时候直接拼接_index 的 value 也是可以的。
现在就是想看看 mongodb 有没有提供这样一种方法,直接做到完全匹配到我查询的文档
